• API Reference
Requests and responses
Models
memberships
Schemas
powered by Zudoku
Open Education API
Open Education API

Schemas


Service

A metadata set providing details on the provider of this OOAPI implementation
contactEmail
string · email · maxLength: 256 · required

Contact e-mail address of the service owner

specification
string · uri · maxLength: 2048 · required

URL of the API specification (YAML or JSON, compliant with Open API Specification v3)

documentation
string | null · uri · maxLength: 2048

URL of the API documentation, including general terms and privacy statement

array | null
array | null
object[]

AcademicSession

A named period of time that can be used to communicate the various schedules and time periods an institution recognizes and uses to organise their education. AcademicSessions can be nested. Offerings MAY be linked to a specific AcademicSession to indicate that the specified Offering takes place during the AcademicSession, however this is not mandatory.
academicSessionId
string · uuid · required

Unique id for this academic session

academicSessionType
string · required

The type of this academic session. This is an extensible enumeration.

  • academic_year: Academic year
  • semester: Semester, typically comprising two terms per academic year
  • trimester: Trimester, typically comprising three terms per academic year
  • quarter: Quarter, typically comprising four terms per academic year
  • testing_period: A period during which tests take place
  • period: Any other period within an academic year

Implementations may add further values beyond those listed above, provided they do not overlap in definition with existing values.

object · required

The primary human readable identifier for this academic session. This is often the source identifier as defined by the institution.

object[] · minItems: 1 · required

The name of this academic session

startDateTime
string · date-time · required

The moment on which this academic session starts, RFC3339 (full-date)

endDateTime
string · date-time · required

The moment on which this academic session ends, RFC3339 (full-date)

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this AcademicSession

parentId
string · uuid

The identifier of the parent academicSession for this session (e.g. Autumn term 20xx where the current session is week 40). When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded parent academicSession object of this session (e.g. Autumn term 20xx where the current session is week 40). When the client requests expansion of parent, the full expanded academicSession object MUST be returned here instead of only the identifier. If no parent is defined, this value is null.

childIds
array | null · Identifier (circular)

The list of identifiers of child academicSessions of this session (e.g. all academic sessions in Autumn term 20xx). When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

array | null

The expanded child academicSession objects of this session (e.g. all academic sessions in Autumn term 20xx). When the client requests expansion of children, the full expanded academicSession objects MUST be returned here instead of only the identifiers. If no child sessions are defined, this value is null.

yearId
string · uuid

The identifier of the top-level academicSession year for this session (e.g. 20xx where the current session is week 40 of a semester). When the client does not request expansion of year, only this identifier is returned. This field is expandable.

year
object | null

The expanded top-level academicSession year object for this session (e.g. 20xx where the current session is week 40 of a semester). When the client requests expansion of year, the full expanded academicSession object MUST be returned here instead of only the identifier. If no top-level year is defined, this value is null.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

Building

An object describing a building and the properties of a building.
buildingId
string · uuid · required

Unique id of this building

object · required

The primary human readable identifier for this building. This is often the source identifier as defined by the institution.

object[] · minItems: 1 · required

The name of this building

abbreviation
string | null · maxLength: 256

The abbreviation of the name of this building

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this building.

array | null

An array of additional human readable codes/identifiers for the entity being described.

LearningComponent

A component is a part of a course
componentId
string · uuid · required

Unique id of this component

object · required

The primary human readable identifier for this component. This is often the source identifier as defined by the institution.

componentType
string · required

The type of learning component, indicating the format or method of educational delivery. One learning component of a certain type can have multiple offerings, one component can refer to a set of componentOfferings. e.g. the component lecture can be a set of lectures (group of offerings) An example of such a case in natural language: the lecture takes place weekly for 7 weeks This implies one learningComponent of type lecture with seven learningComponentOfferings of type lecture.

CodeDescription
consultationScheduled meeting for individual or group guidance.
excursionEducational trip or site visit.
externalActivity outside the home institution (e.g. internship,
course at a partner institution).
independent_studySelf-directed learning without scheduled contact hours.
learning_communityStructured collaboration between education, research and
industry with shared ownership of learning and outcomes;
distinct from internships and from COIL.
lectureClassroom-based or online lecture given by an instructor.
practicalHands-on session focusing on application of concepts.
projectStructured assignment carried out over a period of time.
skills_trainingSession focused on developing specific practical or
professional skills.
tutorialInteractive small-group session to reinforce learning.
workshopIntensive session focused on practical skills or knowledge.

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this component

abbreviation
string | null · maxLength: 256

The abbreviation of this component

modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this component. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this component.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this learning component is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the learning component.

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this learning component. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

learningOutcomes
array | null

The expanded learning outcome objects related to this learning component. When the client requests expansion of learningOutcomes, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way exams for this course are taken (ECTS-assessment method and criteria).

array | null

Addresses for this component

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

parentId
string · uuid

The identifier of the parent learningComponent of which the current learningComponent is a child. When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded parent learningComponent of which the current learningComponent is a child. When the client requests expansion of parent, the full expanded learningComponent object MUST be returned here instead of only the identifier. If no parent is defined, this value is null.

childIds
array | null · Identifier (circular)

The identifiers of the learningComponents which are a part of this learningComponent (e.g. combined tests). When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

children
array | null

The expanded learningComponent objects which are a part of this learningComponent (e.g. combined tests). When the client requests expansion of children, the full expanded learningComponent objects MUST be returned here instead of only the identifiers. If no children are defined, this value is null.

courseId
string · uuid

The identifier of the course of which this component is a part. When the client does not request expansion of course, only this identifier is returned. This field is expandable.

course
object | null

The expanded course object of which this component is a part. When the client requests expansion of course, the full expanded course object MUST be returned here instead of only the identifier. If no course is defined, this value is null.

organisationId
string · uuid

The identifier of the organisation which provides this component. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object which provides this component. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

TestComponent

A component is a part of a course
componentId
string · uuid · required

Unique id of this component

object · required

The primary human readable identifier for this component. This is often the source identifier as defined by the institution.

componentType
string · required

The way the test is conducted. This can be a test on paper, a digital test, a life-skills test, an oral test, or a portfolio assessment.
Together with modeOfStudy or assessment, it indicates where the test is taken and how it is conducted:

  • test_on_paper: Written examination on paper, typically in a controlled setting.
  • digital_test: Computer-based or online test, conducted via a digital platform.
  • life_skills_test: Practical assessment of real-world competencies and life-skills.
  • oral_test: Spoken examination, typically involving verbal questioning and answering.
  • portfolio_assessment: Evaluation based on a collection of the candidate's work over time.

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this component

abbreviation
string | null · maxLength: 256

The abbreviation of this component

modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this component. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

extraDuration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The extra duration of this component for candidates that are awarded extra time as a personal need. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

attempts
integer | null

The number of attempts that are allowed for this component within one offering.

passFrom
string | null

The minimum value that is required to pass this component within one offering. This value is inclusive and depends on the resultValueType.

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this component.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this test component is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the test component.

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this test component. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

array | null

The expanded learning outcome objects related to this test component. When the client requests expansion of learningOutcomes, the full learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that are allowed during this test

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way this test is taken.

array | null

Addresses for this component

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

parentId
string · uuid

The identifier of the parent Test Component of which the current Test Component is a child. When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded parent Test Component of which the current Test Component is a child. When the client requests expansion of parent, the full Test Component object MUST be returned here instead of only the identifier. If no parent is defined, this value is null.

childIds
array · Identifier (circular)

The identifiers of the Test Components that are part of this Test Component. When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

object[]

The expanded Test Components that are part of this Test Component (e.g. combined tests). When the client requests expansion of children, the full Test Component objects MUST be returned here instead of only the identifiers.

courseId
string · uuid

The identifier of the course of which this component is a part. When the client does not request expansion of course, only this identifier is returned. This field is expandable.

course
object | null

The expanded course object of which this component is a part. When the client requests expansion of course, the full course object MUST be returned here instead of only the identifier. If no course is defined, this value is null.

organisationId
string · uuid

The identifier of the organisation which provides this component. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object which provides this component. When the client requests expansion of organisation, the full organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

LearningComponentOffering

startDateTime and endDateTime of an offering are to be provided at least in the state `active`. In all other states the times on the academic session should indicate in what timeframe the offering will or should have been available.
learningComponentOfferingId
string · uuid · required

The unique ID of the learning component offering, this should be unique across all programme, course, learning, and test component offerings.

object · required

The primary human readable identifier for this offering. This is often the source identifier as defined by the institution.

name
array · minItems: 1 · required · LanguageTypedString (circular)

The name of this offering

The offering identifiers (0..N) associated with this group.

academicSessionId
string · uuid

The identifier of the academicSession during which this courseOffering takes place. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object during which this courseOffering takes place. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The state of this offering, e.g. active, inactive, archived

The rostering state of this offering indicating the state in relation to planning, e.g. active, inactive, archived

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this offering

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this offering.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should at least a two-letter language code as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the offering.

modesOfDelivery
array | null
maxNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed to enrol for this offering

enrolledNumberStudents
number | null · int32 · min: 0

The number of students who have already enrolled for this offering

pendingNumberStudents
number | null · int32 · min: 0

The number of students who have a pending enrolment request for this offering

minNumberStudents
number | null · int32 · min: 0

The minimum number of students needed for this offering to proceed

resultExpected
boolean | null

resultExpected, previously known as isLineItem is used so the specific instance of the object is identified as being an element that CAN contain “grade” information. Offerings need not always result in a grade or another type of result. If there is a result expected from a programmeOffering/courseOffering/componentOffering the is resultExpected field should be set to true

link
string | null · uri · maxLength: 2048

URL of this offering's webpage.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

An array of periods that a person can enrol into this offering. The period is defined by target group and dateTime

object[]

Optional supplementary information associated with this resource.

startDateTime
string | null · date-time

The moment on which this offering starts, RFC3339 (date-time)

endDateTime
string | null · date-time

The moment on which this offering ends, RFC3339 (date-time)

resultWeight
integer | null · min: 0 · max: 100

The result weight of this offering

array | null

Addresses for this offering

array | null

Price information for this offering.

roomIds
array | null · Identifier (circular)

The identifiers of the rooms for this offering. When the client does not request expansion of rooms, only these identifiers are returned. This field is expandable.

rooms
array | null

The expanded room objects for this offering. When the client requests expansion of rooms, the full expanded room objects MUST be returned here instead of only the identifiers. If no rooms are defined, this value is null.

learningComponentId
string · uuid

The identifier of the learningComponent that is offered in this learningComponent offering. When the client does not request expansion of learningComponent, only this identifier is returned. This field is expandable.

learningComponent
object | null

The expanded learningComponent object that is offered in this learningComponent offering. When the client requests expansion of learningComponent, the full expanded learningComponent object MUST be returned here instead of only the identifier. If no learningComponent is defined, this value is null.

courseOfferingIds
array | null · Identifier (circular)

The identifiers of the courseOfferings to which this learningComponent offering is related. When the client does not request expansion of courseOfferings, only these identifiers are returned. This field is expandable.

courseOfferings
array | null

The expanded courseOffering objects to which this learningComponent offering is related. When the client requests expansion of courseOfferings, the full expanded courseOffering objects MUST be returned here instead of only the identifiers. If no courseOfferings are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this component offering. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this component offering. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

LearningComponentOfferingAssociation

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: personId, learningComponentOfferingId
type = object · requires: personId, learningComponentOffering
type = object · requires: person, learningComponentOfferingId
type = object · requires: person, learningComponentOffering
Properties for Variant 1:
personId
string · uuid · readOnly · required

The identifier of the person referenced here. When the client does not request expansion of person, only this identifier is returned. This field is expandable.

learningComponentOfferingId
string · uuid · required

The identifier of the learningComponentOffering referenced here. When the client does not request expansion of offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly
object | null · readOnly

The expanded person object referenced here. When the client requests expansion of person, the full expanded person object MUST be returned here instead of only the identifier. If no person is defined, this value is null.

learningComponentOffering
object | null

The expanded learningComponentOffering object referenced here. When the client requests expansion of offering, the full expanded learningComponentOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

TestComponentOffering

startDateTime and endDateTime of an offering must be provided at least in the state `active`. In all other states the times on the academic session should indicate in what timeframe the offering will or should have been available.
testComponentOfferingId
string · uuid · required

The unique ID of the test component offering, this should be unique across all programme, course, learning, and test component offerings.

object · required

The primary human readable identifier for this offering. This is often the source identifier as defined by the institution.

name
array · minItems: 1 · required · LanguageTypedString (circular)

The name of this offering

The offering identifiers (0..N) associated with this group.

academicSessionId
string · uuid

The identifier of the academicSession during which this courseOffering takes place. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object during which this courseOffering takes place. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The state of this offering, e.g. active, inactive, archived

The rostering state of this offering indicating the state in relation to planning, e.g. active, inactive, archived

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this offering

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this offering.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should at least a two-letter language code as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the offering.

modesOfDelivery
array | null
maxNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed to enrol for this offering

enrolledNumberStudents
number | null · int32 · min: 0

The number of students who have already enrolled for this offering

pendingNumberStudents
number | null · int32 · min: 0

The number of students who have a pending enrolment request for this offering

minNumberStudents
number | null · int32 · min: 0

The minimum number of students needed for this offering to proceed

resultExpected
boolean | null

resultExpected, previously known as isLineItem is used so the specific instance of the object is identified as being an element that CAN contain “grade” information. Offerings need not always result in a grade or another type of result. If there is a result expected from a programmeOffering/courseOffering/componentOffering the is resultExpected field should be set to true

link
string | null · uri · maxLength: 2048

URL of this offering's webpage.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

An array of periods that a person can enrol into this offering. The period is defined by target group and dateTime

object[]

Optional supplementary information associated with this resource.

startDateTime
string | null · date-time

The moment on which this offering starts, RFC3339 (date-time)

endDateTime
string | null · date-time

The moment on which this offering ends, RFC3339 (date-time)

resultWeight
integer | null · min: 0 · max: 100

The result weight of this offering

array | null

Addresses for this offering

array | null

Price information for this offering.

roomIds
array | null · Identifier (circular)

The identifiers of the rooms for this offering. When the client does not request expansion of rooms, only these identifiers are returned. This field is expandable.

rooms
array | null

The expanded room objects for this offering. When the client requests expansion of rooms, the full expanded room objects MUST be returned here instead of only the identifiers. If no rooms are defined, this value is null.

componentId
string · uuid

The identifier of the component that is offered in this component offering. When the client does not request expansion of component, only this identifier is returned. This field is expandable.

component
object | null

The expanded component that is offered in this component offering. When the client requests expansion of component, the full component object MUST be returned here instead of only the identifier. If no component is defined, this value is null.

courseOfferingIds
array | null

The identifiers of the course offerings to which this test component offering is related. When the client does not request expansion of courseOfferings, only these identifiers are returned. This field is expandable.

array | null

The expanded course offering objects to which this test component offering is related. When the client requests expansion of courseOfferings, the full course offering objects MUST be returned here instead of only the identifiers. If no course offerings are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this component offering. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this component offering. When the client requests expansion of organisation, the full organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

array | null

Documents that are related to the test component offering. E.g. instructions, assignment, reports, etc.

TestComponentOfferingAssociation

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: personId, testComponentOfferingId
type = object · requires: personId, testComponentOffering
type = object · requires: person, testComponentOfferingId
type = object · requires: person, testComponentOffering
Properties for Variant 1:
personId
string · uuid · readOnly · required

The identifier of the person referenced here. When the client does not request expansion of person, only this identifier is returned. This field is expandable.

testComponentOfferingId
string · uuid · required

The identifier of the testComponentOffering referenced here. When the client does not request expansion of offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly
extraDuration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The extra duration of this component for this specific candidate. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

requiredPersonalNeeds
array | null

The additional facilities or resources needed by a person to make the component accessible and usable.

attempt
integer | null

The attempt this association is linked to.

irregularities
array | null

The irregularities that are reported for this association. This is a list of the irregularities that are reported for this association.

array | null

Documents that are related to the test component offering association. E.g. handed in documents, plagiarism reports, test made, etc.

object | null · readOnly

The expanded person object referenced here. When the client requests expansion of person, the full person object MUST be returned here instead of only the identifier. If no person is defined, this value is null.

testComponentOffering
object | null

The expanded testComponentOffering object referenced here. When the client requests expansion of testComponentOffering, the full TestComponentOffering object MUST be returned here instead of only the identifier. If no testComponentOffering is defined, this value is null.

attemptIds
array | null

The identifiers of the attempts related to this testComponentOffering association. When the client does not request expansion of attempts, only these identifiers are returned. This field is expandable.

array | null

The expanded attempt objects related to this testComponentOffering association. When the client requests expansion of attempts, the full TestComponentOfferingAssociationAttempt objects MUST be returned here instead of only the identifiers. If no attempts are defined, this value is null.

Course

An object describing the metadata of a course
courseId
string · uuid · required

Unique id of this course

object · required

The primary human readable identifier for this course. This is often the source identifier as defined by the institution.

object[] · minItems: 1 · required

The name of this course (ECTS-title)

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this course (ECTS-code)

array | null
modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this course. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

firstStartDate
string | null · date-time

The date and time when participants can follow this course for the first time.

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this course (ECTS-description).

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should be three-letter language codes as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the course.

fieldsOfStudy
string | null · minLength: 2 · maxLength: 6

Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). ISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added. Preferably fieldsOfStudy contains at least 4 digits. ISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf). 07 Engineering, manufacturing and construction 073 Architecture and construction 0731 Architecture and town planning 073101 Town planning

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this course. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

array | null

The expanded learning outcome objects related to this course. When the client requests expansion of learningOutcomes, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

admissionRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

This information may be given at an institutional level and/or at the level of individual programmes. Make sure that it is clear whether the information applies to fee-paying students (national and/or international) or to exchange students.

qualificationRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

Normally, students will receive a diploma when they have completed the (official) study programme and have obtained the required number of credits. If there are any other specific requirements that students need to have fulfilled, mention them here.

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way exams for this course are taken (ECTS-assessment method and criteria).

link
string | null · uri · maxLength: 2048

URL of the course's website

array | null

Addresses for this course

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

programmeIds
array | null · Identifier (circular)

The identifiers of the programmes of which this course is a part. This array is used because a course can belong to multiple programmes, for example in alliances. When the client does not request expansion of programmes, only these identifiers are returned. This field is expandable.

object[]

Optional supplementary information associated with this resource.

array | null

The expanded programme objects of which this course is a part. This array is used because a course can belong to multiple programmes, for example in alliances. When the client requests expansion of programmes, the full expanded programme objects MUST be returned here instead of only the identifiers. If no programmes are defined, this value is null.

coordinatorIds
array | null · Identifier (circular)

The identifiers of the persons responsible for this course. When the client does not request expansion of coordinators, only these identifiers are returned. This field is expandable.

coordinators
array | null · Person (circular)

The expanded person objects responsible for this course. When the client requests expansion of coordinators, the full expanded person objects MUST be returned here instead of only the identifiers. If no coordinators are defined, this value is null.

instructorIds
array | null · Identifier (circular)

The identifiers of the persons teaching or delivering this course. When the client does not request expansion of instructors, only these identifiers are returned. This field is expandable.

instructors
array | null · Person (circular)

The expanded person objects teaching or delivering this course. When the client requests expansion of instructors, the full expanded person objects MUST be returned here instead of only the identifiers. If no instructors are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this course. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this course. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

validFrom
string | null · date-time

The first day and time this course is valid (inclusive).

validTo
string | null · date-time

The day and time this course ceases to be valid (e.g. exclusive).

CourseOffering

startDateTime and endDateTime of an offering are to be provided at least in the state `active`. In all other states the times on the academic session should indicate in what timeframe the offering will or should have been available.
courseOfferingId
string · uuid · required

The unique ID of the course offering, this should be unique across all programme, course, learning, and test component offerings.

object · required

The primary human readable identifier for this offering. This is often the source identifier as defined by the institution.

name
array · minItems: 1 · required · LanguageTypedString (circular)

The name of this offering

The offering identifiers (0..N) associated with this group.

academicSessionId
string · uuid

The identifier of the academicSession during which this courseOffering takes place. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object during which this courseOffering takes place. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The state of this offering, e.g. active, inactive, archived

The rostering state of this offering indicating the state in relation to planning, e.g. active, inactive, archived

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this offering

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this offering.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should at least a two-letter language code as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the offering.

modesOfDelivery
array | null
maxNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed to enrol for this offering

enrolledNumberStudents
number | null · int32 · min: 0

The number of students who have already enrolled for this offering

pendingNumberStudents
number | null · int32 · min: 0

The number of students who have a pending enrolment request for this offering

minNumberStudents
number | null · int32 · min: 0

The minimum number of students needed for this offering to proceed

resultExpected
boolean | null

resultExpected, previously known as isLineItem is used so the specific instance of the object is identified as being an element that CAN contain “grade” information. Offerings need not always result in a grade or another type of result. If there is a result expected from a programmeOffering/courseOffering/componentOffering the is resultExpected field should be set to true

link
string | null · uri · maxLength: 2048

URL of this offering's webpage.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

An array of periods that a person can enrol into this offering. The period is defined by target group and dateTime

object[]

Optional supplementary information associated with this resource.

startDateTime
string | null · date-time

The moment on which this offering starts, RFC3339 (date-time)

endDateTime
string | null · date-time

The moment on which this offering ends, RFC3339 (date-time)

flexibleEntryPeriodStartDateTime
string | null · date

Use this attribute for courses that allow participants who have already enrolled to begin their participation at different moments without missing essential content. This attribute MUST be used in combination with flexibleEntryPeriodEndDateTime.

flexibleEntryPeriodEndDateTime
string | null · date

If this is a course wherein participants who have already enrolled can start at various moments without missing any essential content, use this attribute in combination with flexibleEntryPeriodStartDateTime.

array | null

Addresses for this offering

array | null

Price information for this offering.

courseId
string · uuid

The identifier of the course that is offered in this course offering. When the client does not request expansion of course, only this identifier is returned. This field is expandable.

course
object | null

The expanded course object that is offered in this course offering. When the client requests expansion of course, the full expanded course object MUST be returned here instead of only the identifier. If no course is defined, this value is null.

programmeOfferingIds
array | null · Identifier (circular)

An array of 0 or more identifiers of programmeOfferings that this course offering is related to. When the client does not request expansion of programmeOfferings, only these identifiers are returned. This field is expandable.

array | null

An array of 0 or more expanded programmeOffering objects that this course offering is related to. When the client requests expansion of programmeOfferings, the full expanded programmeOffering objects MUST be returned here instead of only the identifiers. If no programmeOfferings are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this course offering. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this course offering. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

CourseOfferingAssociation

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: courseOfferingId, personId
type = object · requires: courseOfferingId, person
type = object · requires: courseOffering, person
type = object · requires: courseOffering, personId
Properties for Variant 1:
courseOfferingId
string · uuid · required

The identifier of the courseOffering referenced here. When the client or server does not expand offering, only this identifier is returned. This field is expandable.

personId
string · uuid · required

The identifier of the person referenced here. When the client or server does not expand person, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly

Only required when the studyload for the individual student/enrolment is different from the studyload of the course offering.

courseOffering
object | null

The expanded courseOffering object referenced here. When the client or server expands offering, the full expanded courseOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

object | null

The expanded person object referenced here. When the client or server expands person, the full expanded person object MUST be returned here instead of only the identifier. If no person is defined, this value is null.

Group

A group is simply a collection of persons. Groups can be used to accommodate various use cases. Groups MAY optionally have a relation to an offering, however the meaning of such relations is left unspecified and is left up to the implementer.
groupId
string · uuid · required

The unique ID of the group.

object · required

The primary human readable identifier for this group. This is often the source identifier as defined by the institution.

groupType
string · required

The type of this group:

  • class: A group of students jointly scheduled for, assigned to, or engaged in educational activities
  • team: A group composed of members of a team, which may consist of students, staff, or a mix of both
  • group: A group of students jointly scheduled for, assigned to, or engaged in educational activities in a context not covered by a class

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this group

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this group

startDateTime
string | null · date-time

The moment on which this group starts being active, RFC3339 (date-time). Groups can be ordered in time through the academicSession. The start and end date and time fields SHOULD always contain the most accurate dates.

endDateTime
string | null · date-time

The moment on which this group ends being active, RFC3339 (date-time) Groups can be ordered in time through the academicSession. The start and end date and time fields SHOULD always contain the most accurate dates.

personCount
number | null · int32 · min: 0

The number of persons that are member of this group

array | null

An array of additional human readable codes/identifiers for the entity being described.

organisationId
string · uuid

The identifier of the organisation that manages this group. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this group. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

academicSessionId
string · uuid

The identifier of the academicSession for which this group is intended. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object for which this group is intended. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The offering identifiers (0..N) associated with this group.

Membership

A membership contains the information on a membership of a person for a specific group
personId
string · uuid · required

Unique id for this membership (this is the personID since there is a 1-1 relationship between membership of a group and a person) item

groupId
string · uuid · required

Id for the group where the person has a membership

state
string · required

The state of this membership:

  • cancelled: The membership has been formally terminated and is no longer valid
  • active: The membership is currently valid and in effect

This is an extensible enumeration. Use the prefix x- for custom values.

role
string · required

The role of this person in the context of this membership:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The moment from which the person participates in this membership, RFC3339 (date-time)

endDateTime
string | null · date-time

The moment until which this person participates in this membership (when the membership stops), RFC3339 (date-time)

LearningOutcome

statements regarding what a learner knows, understands and is able to do on completion of a learning process, which are defined in terms of knowledge, skills and responsibility and autonomy (https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32017H0615(01)&from=EN)
learningOutcomeId
string · uuid · required

Unique id of this learning outcome

object · required

The primary human readable identifier for this learning outcome. This is often the source identifier as defined by the institution.

object[] · minItems: 1 · required

The name of this learning outcome

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this LearningOutcome

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this learning outcome.

parentIds
array | null

The identifiers of the learning outcomes which are the parents of this learning outcome. When the client does not request expansion of parents, only these identifiers are returned. This field is expandable.

parents
array | null

The expanded learning outcome objects which are the parents of this learning outcome. When the client requests expansion of parents, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no parents are defined, this value is null.

childIds
array | null · Identifier (circular)

The identifiers of all learning outcomes for which this learning outcome is the parent. When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

children
array | null

The expanded learning outcome objects for which this learning outcome is the parent. When the client requests expansion of children, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no children are defined, this value is null.

fieldsOfStudy
string | null · minLength: 2 · maxLength: 6

Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). ISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added. Preferably fieldsOfStudy contains at least 4 digits. ISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf). 07 Engineering, manufacturing and construction 073 Architecture and construction 0731 Architecture and town planning 073101 Town planning

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

validFrom
string | null · date-time

The date and time for when this learning outcome will be active. Should be a string formatted as an RFC3099 full-date.

validTo
string | null · date-time

The date and time when this learning outcome will no longer be valid, or should be renewed. Should be a string formatted as an RFC3099 full-date.

Organisation

A description of a group of people working together to achieve a goal
organisationId
string · uuid · required

Unique id of this organisation

object · required

The primary human readable identifier for the organisation. This is often the source identifier as defined by the root organisation.

organisationType
string · required

The type of this organisation. When using non-root organisation types, make sure that there is always a parent organisation of type root available.

  • root: The top-level organisation, representing the organisation itself
  • institute: A subdivision of the root organisation, typically focused on a broad field of study
  • department: An organisational unit within an organisation or one of the subdivisions of an organisation, focused on a specific discipline
  • faculty: A major academic division within an institution, often overseeing multiple departments
  • branch: A geographically separate location or campus of an organisation
  • academy: A specialised academic unit, often focused on applied or artistic disciplines
  • school: An organisational unit typically used in primary, secondary, or specialised higher education contexts

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of the organisation

shortName
string | null · maxLength: 256

Short name of the organisation

description
array | null · minItems: 1 · LanguageTypedString (circular)

If the organisation is an educational organisation, any general description should clearly mention the type of education organisation, especially in the case of a binary system. In Dutch; universiteit (university) or hogeschool (university of applied sciences). If the organisation is not an educational organisation, a general description should describe the role it plays in education like providing certain types of internships, educational services, products or facilities.

array | null

Addresses of this organisation

link
string | null · uri · maxLength: 2048

URL of the organisation's website

logo
string | null · uri · maxLength: 2048

Logo of this organisation

array | null

An array of additional human readable codes/identifiers for the entity being described.

rootId
string · uuid

The identifier of the organisation which is the root organisation of this organisation. When the client does not request expansion of root, only this identifier is returned. This field is expandable.

root
object | null

The expanded organisation object which is the root organisation of this organisation. When the client requests expansion of root, the full expanded organisation object MUST be returned here instead of only the identifier. If no root organisation is defined, this value is null.

parentId
string · uuid

The identifier of the organisational unit which is the parent of this organisation. When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded organisation object which is the parent of this organisation. When the client requests expansion of parent, the full expanded organisation object MUST be returned here instead of only the identifier. If no parent organisation is defined, this value is null.

childIds
array | null · Identifier (circular)

The identifiers of the organisational units for which this organisation is the parent. When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

children
array | null

The expanded organisational unit objects for which this organisation is the parent. When the client requests expansion of children, the full expanded organisation objects MUST be returned here instead of only the identifiers. If no children are defined, this value is null.

Person

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: surname, primaryCode, activeEnrolment
type = object · requires: givenname, primaryCode, activeEnrolment
type = object · requires: preferredName, primaryCode, activeEnrolment
Properties for Variant 1:
object · required

The primary human readable identifier for the person. This is often the source identifier as defined by the institution.

surname
string · maxLength: 256 · required

The family name of this person

activeEnrolment
boolean · required

Whether this person has an active enrolment.

personId
string · uuid

Unique id of this person

givenName
string | null · maxLength: 256

The first name of this person

alternateName
string | null · maxLength: 256

The Name a person chooses to use. this is part of a Self Sovereign name e.g. in the eduId process comparable to schema.org alternateName

preferredName
string | null · maxLength: 256

The name how the person would like to be called. Usually first name of this person. In line with ISO/IEC 24760 – Identity Management Vocabulary

surnamePrefix
string | null

The prefix of the family name of this person

displayName
string | null · maxLength: 256

The name of this person which will be displayed

initials
string | null

The initials of this person

idCheckName
string | null

The name of the person as printed on official identification documents (driving licence, passport or identity card). This MUST be formatted as "surname prefix surname, given names" (separating surnamePrefix and surname with a single space, and surname and given names with a comma and space).

If the surname or given names are not available or are secret, the values "secret" and "not_available" are recommended. The surname prefix may be omitted. E.g. "van der Graaf, Jacobus Adrianus".

Optionally, the value of the student number can be added to this field by appending it at the end, separated by a comma. E.g. "van der Graaf, Jacobus Adrianus, s12345678"

dateOfBirth
string | null · date

The date of birth of this person, using the full-date format as defined in RFC 3339 (section 5.6).

cityOfBirth
string | null

The city of birth of this person

dateOfNationality
string | null · date

The date of nationality of this person, using the full-date format as defined in RFC 3339 (section 5.6).

affiliations
array | null
email
string | null · email · maxLength: 256

The primary email address of this person

secondaryEmail
string | null · email · maxLength: 256

The secondary email address of this person

telephoneNumber
string | null · maxLength: 256

The telephone number of this person

mobileNumber
string | null · maxLength: 256

The mobile number of this person

photoSocial
string | null · uri · maxLength: 2048

The url of the informal picture of this person

photoOfficial
string | null · uri · maxLength: 2048

The url of the official picture of this person

titlePrefix
string | null

A title prefix to be used for this person

titleSuffix
string | null

A title suffix to be used for this person

office
string | null

The name of the office where this person is located

ICEName
string | null · maxLength: 256

Full name of In Case of Emergency contact

ICEPhoneNumber
string | null · maxLength: 256

Phone number of In Case of Emergency contact

languageOfChoice
array | null · Language (circular)

The language(s) of choice for this person according to RFC4647. For details see the descriptions in the Language schema.

array | null

An array of additional human readable codes/identifiers for the entity being described.

array | null · minItems: 0

Assigned resources or time based on the needs of a person. They describe which needs the student requires under which conditions e.g. 15% extra time for tests that requires maths skills. These needs can later in the flows be mapped to a personalNeed for a specific association. Examples of such assignedNeeds: "ExtraTimeOnlyMaths25%", "ExtraTimeOnlyMaths30Min", "ExtraTimeDigitalTests25%"

Programme

A collection of courses that lead to a certifiable learning outcome
programmeId
string · uuid · required

Unique id for this programme

object · required

The primary human readable identifier for the programme. This is often the source identifier as defined by the institution.

programmeType
string · required

The type of this programme:

  • programme: A full formal programme of study leading to a qualification or degree
  • minor: A smaller, complementary programme that broadens or deepens the main field of study
  • honours: An honours programme, typically with additional academic requirements or distinction
  • specialisation: A focused area of study within a broader programme or degree
  • track: A structured learning path within a programme, often thematically or methodologically defined
  • specification: A further defined variant or subset of a track or specialisation

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this programme

abbreviation
string | null · maxLength: 256

The abbreviation of this programme

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this programme

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this programme is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the programme.

array | null
qualificationDesignations
string[]

Academic field designations that specify the discipline area of the degree (e.g., "of Arts", "of Sciences", "of Engineering"). Multiple designations may apply to interdisciplinary programmes.

modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this programme. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

firstStartDateTime
string | null · date-time

The moment when participants can follow this programme for the first time.

fieldsOfStudy
string | null · minLength: 2 · maxLength: 6

Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). ISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added. Preferably fieldsOfStudy contains at least 4 digits. ISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf). 07 Engineering, manufacturing and construction 073 Architecture and construction 0731 Architecture and town planning 073101 Town planning

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this programme. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

array | null

The expanded learning outcome objects related to this programme. When the client requests expansion of learningOutcomes, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way exams for this course are taken (ECTS-assessment method and criteria).

admissionRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

This information may be given at an institutional level and/or at the level of individual programmes. Make sure that it is clear whether the information applies to fee-paying students (national and/or international) or to exchange students.

qualificationRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

Normally, students will receive a diploma when they have completed the (official) study programme and have obtained the required number of credits. If there are any other specific requirements that students need to have fulfilled, mention them here.

link
string | null · uri · maxLength: 2048

URL of the programme's website

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

Addresses for this programme

parentId
string · uuid

The identifier of the parent programme of which the current programme is a child. When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded parent programme of which the current programme is a child. When the client requests expansion of parent, the full expanded programme object MUST be returned here instead of only the identifier. If no parent is defined, this value is null.

childIds
array | null · Identifier (circular)

The identifiers of the programmes which are a part of this programme (e.g. specialisations). When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

array | null

The expanded programme objects which are a part of this programme (e.g. specialisations). When the client requests expansion of children, the full expanded programme objects MUST be returned here instead of only the identifiers. If no children are defined, this value is null.

coordinatorIds
array | null · Identifier (circular)

The identifiers of the persons responsible for this programme. When the client does not request expansion of coordinators, only these identifiers are returned. This field is expandable.

coordinators
array | null · Person (circular)

The expanded person objects responsible for this programme. When the client requests expansion of coordinators, the full expanded person objects MUST be returned here instead of only the identifiers. If no coordinators are defined, this value is null.

instructorIds
array | null · Identifier (circular)

The identifiers of the persons teaching or delivering this programme. When the client does not request expansion of instructors, only these identifiers are returned. This field is expandable.

instructors
array | null · Person (circular)

The expanded person objects teaching or delivering this programme. When the client requests expansion of instructors, the full expanded person objects MUST be returned here instead of only the identifiers. If no instructors are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation providing this programme. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object providing this programme. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

supplementaryInformation
circular
validFrom
string | null · date-time

The first moment this programme is valid (inclusive).

validTo
string | null · date-time

The moment this programme ceases to be valid (e.g. exclusive).

ProgrammeOffering

A programme offering which describes the programme in time.
programmeOfferingId
string · uuid · required

The unique ID of the programme offering, this should be unique across all programme, course, learning, and test component offerings.

object · required

The primary human readable identifier for this offering. This is often the source identifier as defined by the institution.

name
array · minItems: 1 · required · LanguageTypedString (circular)

The name of this offering

The offering identifiers (0..N) associated with this group.

academicSessionId
string · uuid

The identifier of the academicSession during which this courseOffering takes place. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object during which this courseOffering takes place. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The state of this offering, e.g. active, inactive, archived

The rostering state of this offering indicating the state in relation to planning, e.g. active, inactive, archived

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this offering

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this offering.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should at least a two-letter language code as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the offering.

modesOfDelivery
array | null
maxNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed to enrol for this offering

enrolledNumberStudents
number | null · int32 · min: 0

The number of students who have already enrolled for this offering

pendingNumberStudents
number | null · int32 · min: 0

The number of students who have a pending enrolment request for this offering

minNumberStudents
number | null · int32 · min: 0

The minimum number of students needed for this offering to proceed

resultExpected
boolean | null

resultExpected, previously known as isLineItem is used so the specific instance of the object is identified as being an element that CAN contain “grade” information. Offerings need not always result in a grade or another type of result. If there is a result expected from a programmeOffering/courseOffering/componentOffering the is resultExpected field should be set to true

link
string | null · uri · maxLength: 2048

URL of this offering's webpage.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

An array of periods that a person can enrol into this offering. The period is defined by target group and dateTime

object[]

Optional supplementary information associated with this resource.

startDateTime
string | null · date-time

The moment on which this offering starts, RFC3339 (date-time)

endDateTime
string | null · date-time

The moment on which this offering ends, RFC3339 (date-time)

flexibleEntryPeriodStartDateTime
string | null · date

Use this attribute for courses that allow participants who have already enrolled to begin their participation at different moments without missing essential content. This attribute MUST be used in combination with flexibleEntryPeriodEndDateTime.

flexibleEntryPeriodEndDateTime
string | null · date

If this is a course wherein participants who have enrolled can start at various moments without missing anything, use this attribute in combination with flexibleEntryPeriodStartDateTime.

array | null

Addresses for this offering

array | null · minItems: 1

Price information for this offering.

programmeId
string · uuid

The identifier of the programme that is offered in this programmeOffering. When the client does not request expansion of programme, only this identifier is returned. This field is expandable.

programme
object | null

The expanded programme object that is offered in this programmeOffering. When the client requests expansion of programme, the full expanded programme object MUST be returned here instead of only the identifier. If no programme is defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this programmeOffering. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this programmeOffering. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

Room

An area within a building where education can take place
roomId
string · uuid · required

Unique id for this room

object · required

The primary human readable identifier for the room. This is often the source identifier as defined by the institution.

roomType
string · required

The type of this room.

  • general_purpose: Multi-purpose space used for general activities or flexible functions.
  • lecture_room: Room primarily used for lectures or large instructional sessions.
  • computer_room: Space equipped with computers for teaching, training or research.
  • laboratory: Room designed for practical experiments, testing or scientific work.
  • office: Workspace for administrative or academic staff.
  • workspace: Shared or individual area for working or studying.
  • exam_location: Designated space for taking written or digital examinations.
  • study_room: Quiet area intended for individual or group study.
  • examination_room: Private space for medical or psychological assessments.
  • conference_room: Room intended for meetings, discussions or presentations.

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this room

abbreviation
string | null · maxLength: 256

The abbreviation of the name of this room

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this room. The limited implementation of Git Hub Markdown syntax MAY be used for rich text representation.

totalSeats
integer | null · int32

The total number of seats located in the room

availableSeats
integer | null · int32

The total number of available (=non-reserved) seats in the room

floor
string | null

The floor on which this room is located

wing
string | null

The wing in which this room is located

geolocation
object | null

Geolocation of the entrance of this room (WGS84 coordinate reference system)

array | null

An array of additional human readable codes/identifiers for the entity being described.

buildingId
string · uuid

The identifier of the building in which the room is located. When the client does not request expansion of building, only this identifier is returned. This field is expandable.

building
object | null

The expanded building object in which the room is located. When the client requests expansion of building, the full building object MUST be returned here instead of only the identifier. If no building is defined, this value is null.

ProgrammeOfferingAssociation

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: programmeOfferingId, personId
type = object · requires: programmeOfferingId, person
type = object · requires: programmeOffering, person, programmeOfferingId
type = object · requires: programmeOffering, personId, programmeOfferingId
type = object · requires: programmeOfferingId, personId, programmeOffering
type = object · requires: programmeOfferingId, person, programmeOffering
type = object · requires: programmeOffering, person
type = object · requires: programmeOffering, personId
Properties for With courseOfferingId:
programmeOfferingId
required

The identifier of the programmeOffering referenced here. When the client does not request expansion of offering, only this identifier is returned. This field is expandable.

personId
readOnly · required

The identifier of the person referenced here. When the client does not request expansion of person, only this identifier is returned. This field is expandable.

programmeOffering
object | null

The expanded programmeOffering object referenced here. When the client requests expansion of offering, the full expanded programmeOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

person
object | null · readOnly

The expanded person object referenced here. When the client requests expansion of person, the full expanded person object MUST be returned here instead of only the identifier. If no person is defined, this value is null.

TestComponentOfferingAssociationAttempt

Planning and execution information on an attempt belong to a TestComponentOfferingAssociation. Result on the attempt is only relevant when a score or rawScore can be determined.
attemptId
string · uuid · required

Unique id of this attempt

opportunity
string | null

The opportunity during which this attempt can be fulfilled. Only relevant when only one attempt is allowed per association.

attempt
integer | null · int32

Which attempt this is for the given person on the given offering.

startDateTime
string | null · date-time

Moment (date and time) of the start of the actual attempt. This can be the start date and time for an assessment where the association has no start or end date and time, but only has a relation with an academic session representing a term, trimester, semester or academic year.

endDateTime
string | null · date-time

Moment (date and time) of the end of the actual attempt. This can be the deadline for handing in a document for an assignment or the end date and time for an test where the association has no start or end date and time, but only has a relation with an academic session representing a term, trimester, semester or academic year.

roomIds
array | null

The identifiers of the rooms for this offering. When the client does not request expansion of rooms, only these identifiers are returned. This field is expandable.

rooms
array | null

The expanded room objects for this offering. When the client requests expansion of rooms, the full expanded room objects MUST be returned here instead of only the identifiers. If no rooms are defined, this value is null.

irregularities
string | null

Additional information about external disturbances or (potentially) illegal actions by the student, before, during or after the test.

coordinatorId
string · uuid

The identifier of the coordinator responsible for overseeing the test. When the client does not request expansion of coordinator, only this identifier is returned. This field is expandable.

object | null

The expanded person object representing the coordinator responsible for overseeing the test. When the client requests expansion of coordinator, the full person object MUST be returned here instead of only the identifier. If no coordinator is defined, this value is null.

array | null

Documents that are related to the test component offering association attempt. E.g. test completed, work handed in, etc.

expandableObjects

string

The object that can be expanded for this path.

  • academic_session: the academicSession object can be expanded.
  • building: the building object can be expanded.
  • child: the child object (which is an instance of the current object) can be expanded.
  • children: a set of objects (which are an instance of the current object) can be expanded.
  • coordinators: the person object indicating a coordinator can be expanded.
  • instructors: the person object indicating an instructor can be expanded.
  • course: the course object can be expanded.
  • course_offering: the courseOffering object can be expanded.
  • learning_component: the learningComponent object can be expanded.
  • learning_component_offering: the learningComponentOffering object can be expanded.
  • learning_outcome: the learningOutcome object can be expanded.
  • learning_outcomes: the learningOutcomes in the array containing learningOutcome objects can be expanded.
  • organisation: the organisation object can be expanded.
  • parent: the parent object (which is an instance of the current object) can be expanded.
  • person: the person object can be expanded.
  • programme: the programme object can be expanded.
  • programmes: the programmes in the array containing programme objects can be expanded.
  • programme_offering: the programmeOffering object can be expanded.
  • room: the room object can be expanded.
  • rooms: the rooms in the array can be expanded.
  • test_component: the testComponent object can be expanded.
  • test_component_offering: the testComponentOffering object can be expanded.
  • year: the academicSession object indicating the year can be expanded.

Ext

Object for additional non-standard attributes

Problem

A problem details object, conforming to RFC 7807 (Problem Details for HTTP APIs). See https://datatracker.ietf.org/doc/html/rfc7807. It provides a machine-readable format for error conditions, including a type URI, title, status code, and optional detail and instance fields. This ensures consistent handling of error responses across the API.
type
string · uri · maxLength: 2048 · required

An absolute URI that identifies the problem type. When dereferenced, it should provide human-readable documentation.

title
string · required

A short, human-readable summary of the problem type

status
integer · int32 · required

The HTTP status code generated by the origin server for this occurrence of the problem.

detail
string | null

A human-readable explanation specific to this occurrence of the problem

instance
string | null · uri · maxLength: 2048

An absolute URI that identifies the specific occurrence of the problem.

ProblemVersionNotAcceptable

A problem details object, conforming to RFC 7807 (Problem Details for HTTP APIs). See https://datatracker.ietf.org/doc/html/rfc7807. It provides a machine-readable format for error conditions, including a type URI, title, status code, and optional detail and instance fields. This ensures consistent handling of error responses across the API.
type
string · uri · maxLength: 2048 · required

An absolute URI that identifies the problem type. When dereferenced, it should provide human-readable documentation.

title
string · required

A short, human-readable summary of the problem type

status
integer · int32 · required

The HTTP status code generated by the origin server for this occurrence of the problem.

detail
string | null

A human-readable explanation specific to this occurrence of the problem

instance
string | null · uri · maxLength: 2048

An absolute URI that identifies the specific occurrence of the problem.

filterPresence

string · enum
Enum values:
empty
not_empty
empty_array
not_empty_array
true
false
null
not_null

Presence check or special value for filter operations.

Inspired by Storyblok (https://www.storyblok.com/docs/api/content-delivery/v2/filter-queries)

Implementation note:

  • The availability and behaviour of this query functionality are entirely determined by the organisation hosting the API implementation. It is not mandatory for implementers to support this functionality, and it cannot be enforced upon organisations that provide or consume OOAPI endpoints.
  • It is up to each implementer to decide whether to support this feature. It is not a requirement of the OOAPI standard itself.
  • Consumers or working groups that wish to apply specific filtering mechanisms are encouraged to do so using this approach for the sake of consistency across implementations.

academicSessionType

string

The type of this academic session. This is an extensible enumeration.

  • academic_year: Academic year
  • semester: Semester, typically comprising two terms per academic year
  • trimester: Trimester, typically comprising three terms per academic year
  • quarter: Quarter, typically comprising four terms per academic year
  • testing_period: A period during which tests take place
  • period: Any other period within an academic year

Implementations may add further values beyond those listed above, provided they do not overlap in definition with existing values.

Pagination

pageSize
integer · int32 · required

The number of items per page

pageNumber
integer · int32 · min: 1 · required

The current page number

hasPreviousPage
boolean · required

Whether there is a previous page

hasNextPage
boolean · required

Whether there is a previous page

totalPages
integer | null · int32

Total number of pages

codeType

string

The type of code or identifier.

The predefined values are:

CodeDescription
account_idIdentifier for an account.
bag_idIdentifier for a building in the Dutch Building and Address
Registry (BAG).
building_idIdentifier for a building.
component_codeIdentifier for a component (part of a course).
eckidIdentifier assigned within the Dutch Educatieve ContentKeten iD
framework. It enables persistent identification and exchange of
digital learning resources within the Dutch educational sector for
EQF levels 1, 2, 3 and 4. Comparable international approaches
include LRMI, DOI and Handle
identifiers for learning resources.
email_addressAn email address.
esiEuropean Student Identifier.
group_codeIdentifier for a group of people.
group_type_codeIdentifier for the type of group.
identifierGeneric identifier.
institution_codeRegistration number of an educational institution. In the
Netherlands, the former BRIN code has been replaced by the
institution code, issued by the Ministry of Education, Culture
and Science (OCW).
isbnInternational Standard Book Number (for books).
issnInternational Standard Serial Number (for periodicals).
kvk_organisation_idIdentifier for a KvK (Dutch Chamber of Commerce) registered
organisation.
kvk_establishment_idIdentifier for a specific establishment of a KvK
(Dutch Chamber of Commerce) registered organisation.
leerbedrijf_idDutch registration/accreditation id for organisations offering
internships for vocational education students.
national_identity_numberGovernment-assigned personal identifier (e.g. NI number in the UK,
or personnummer in Sweden).
offering_codeIdentifier for a specific offering (programme, course or
component).
organisation_idIdentifier for an organisation.
orcidOpen Researcher and Contributor ID.
product_idIdentifier for a product.
programme_codeIdentifier of a programme (a recognised collection of courses).
In the Netherlands, the former CREBO and CROHO codes have been
replaced by the programme code as registered in RIO, under the
authority of OCW.
room_codeIdentifier for a room.
schac_homeHome organisation represented by its domain name.
student_numberIdentifier for a student.
studielink_numberIdentifier assigned to a student by Studielink (Dutch central
enrolment system).
system_idIdentifier used within a specific system.
usernameUser login name.
uuidUniversally unique identifier.

This is an extensible enumeration. Use the prefix x- for custom values.

IdentifierEntry

codeType
string · required

The type of code or identifier.

The predefined values are:

CodeDescription
account_idIdentifier for an account.
bag_idIdentifier for a building in the Dutch Building and Address
Registry (BAG).
building_idIdentifier for a building.
component_codeIdentifier for a component (part of a course).
eckidIdentifier assigned within the Dutch Educatieve ContentKeten iD
framework. It enables persistent identification and exchange of
digital learning resources within the Dutch educational sector for
EQF levels 1, 2, 3 and 4. Comparable international approaches
include LRMI, DOI and Handle
identifiers for learning resources.
email_addressAn email address.
esiEuropean Student Identifier.
group_codeIdentifier for a group of people.
group_type_codeIdentifier for the type of group.
identifierGeneric identifier.
institution_codeRegistration number of an educational institution. In the
Netherlands, the former BRIN code has been replaced by the
institution code, issued by the Ministry of Education, Culture
and Science (OCW).
isbnInternational Standard Book Number (for books).
issnInternational Standard Serial Number (for periodicals).
kvk_organisation_idIdentifier for a KvK (Dutch Chamber of Commerce) registered
organisation.
kvk_establishment_idIdentifier for a specific establishment of a KvK
(Dutch Chamber of Commerce) registered organisation.
leerbedrijf_idDutch registration/accreditation id for organisations offering
internships for vocational education students.
national_identity_numberGovernment-assigned personal identifier (e.g. NI number in the UK,
or personnummer in Sweden).
offering_codeIdentifier for a specific offering (programme, course or
component).
organisation_idIdentifier for an organisation.
orcidOpen Researcher and Contributor ID.
product_idIdentifier for a product.
programme_codeIdentifier of a programme (a recognised collection of courses).
In the Netherlands, the former CREBO and CROHO codes have been
replaced by the programme code as registered in RIO, under the
authority of OCW.
room_codeIdentifier for a room.
schac_homeHome organisation represented by its domain name.
student_numberIdentifier for a student.
studielink_numberIdentifier assigned to a student by Studielink (Dutch central
enrolment system).
system_idIdentifier used within a specific system.
usernameUser login name.
uuidUniversally unique identifier.

This is an extensible enumeration. Use the prefix x- for custom values.

code
string · required

Human readable value for the code/identifier

Language

string · minLength: 2 · pattern: ^([a-z]{2,3})(-([A-Z…

The language used in the described entity. A string formatted according to RFC 4647 https://www.rfc-editor.org/rfc/rfc4647.html RFC 4647 supports language specifications from very general to very specific. This breaks down as:

  • ([a-z]{2,3}) - Primary language subtag (2-3 letters) ISO 639-1, ISO 639-2, or ISO 639-3 https://www.iso.org/iso-639-language-code
  • (-([A-Z]{2}|[0-9]{3}))? - Optional region/country (2 uppercase letters or 3 digits) ISO 3166-1 or UN M.49 https://www.iso.org/iso-3166-country-codes.html
  • (-([a-z]{4}))? - Optional script subtag (4 lowercase letters)
  • (-([a-z]{2}|[0-9]{3}))* - Optional variant subtags
  • (-[a-z0-9]{2,8})* - Optional extension subtags
  • (-x(-[a-z0-9]{1,8})+)? - Optional private use extensions

When using this schema, the most common format is a two-letter language code as specified by ISO 639-1, optionally followed by a dash and a two-letter country code as specified by ISO 3166-1 (e.g. "en" or "en-GB"). More specific language tags are also allowed, such as "zh-Hant-TW" for Traditional Chinese as used in Taiwan. For sign language based on a certain language two methods are commonly used: either using the subtag "sgn" (e.g. "nl-sgn-NL" for Dutch Sign Language) or using the subtag "s" (e.g. "nl-s-NL" for Dutch Sign Language). Both methods are allowed.

LanguageTypedString

A String with an associated language code. IF this object is used both fields are mandatory.
language
string · minLength: 2 · pattern: ^([a-z]{2,3})(-([A-Z… · required

The language used in the described entity. A string formatted according to RFC 4647 https://www.rfc-editor.org/rfc/rfc4647.html RFC 4647 supports language specifications from very general to very specific. This breaks down as:

  • ([a-z]{2,3}) - Primary language subtag (2-3 letters) ISO 639-1, ISO 639-2, or ISO 639-3 https://www.iso.org/iso-639-language-code
  • (-([A-Z]{2}|[0-9]{3}))? - Optional region/country (2 uppercase letters or 3 digits) ISO 3166-1 or UN M.49 https://www.iso.org/iso-3166-country-codes.html
  • (-([a-z]{4}))? - Optional script subtag (4 lowercase letters)
  • (-([a-z]{2}|[0-9]{3}))* - Optional variant subtags
  • (-[a-z0-9]{2,8})* - Optional extension subtags
  • (-x(-[a-z0-9]{1,8})+)? - Optional private use extensions

When using this schema, the most common format is a two-letter language code as specified by ISO 639-1, optionally followed by a dash and a two-letter country code as specified by ISO 3166-1 (e.g. "en" or "en-GB"). More specific language tags are also allowed, such as "zh-Hant-TW" for Traditional Chinese as used in Taiwan. For sign language based on a certain language two methods are commonly used: either using the subtag "sgn" (e.g. "nl-sgn-NL" for Dutch Sign Language) or using the subtag "s" (e.g. "nl-s-NL" for Dutch Sign Language). Both methods are allowed.

value
string · required

String to describe the entity.

Identifier

string · uuid

An identifier of another resource.

Consumer

The additional elements of a consumer that may be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v6.0/#/technical/consumers-and-profiles/) for further information about this mechanism.
consumerKey
string · required

The key of the consumer (destination) for which this information is intended. See the consumer registry. This key is used to select the additional data to be presented in the request.

exampleProperty
string | null

An example of an additional property

Additional properties are allowed

offeringState

string

The state of this offering:

  • concept: The offering is still in development and not yet available for students
  • cancelled: The offering has been cancelled and is no longer available
  • active: The offering is currently available for students to enrol in and participate
  • inactive: The offering is not currently available for students, but may be available in the future

This is an extensible enumeration. Use the prefix x- for custom values.

CourseOfferingId

courseOfferingId
string · uuid · required

The unique ID of the course offering, this should be unique across all programme, course, learning, and test component offerings.

rosteringState

string

Precision indicator with values for rostering purposes:

  • definitive: Confirmed final timeslot.
  • preliminary: Broadest possible time range, will be further refined.
  • tentative: Scheduled but subject to change.

This is an extensible enumeration. Use the prefix x- for custom values.

modeOfDelivery

string

The mode of delivery of the component, based on the EU vocabulary:
https://op.europa.eu/en/web/eu-vocabularies/dataset/-/resource?uri=http://publications.europa.eu/resource/dataset/learning-assessment

CodeDescription
blendedStructured combination of online and in-person learning
coilCollaborative Online International Learning; joint, cross-
institutional, online delivery (virtual exchange /
co-taught across institutions)
hybridDelivery using different modes in a flexible and
interchangeable way
joint_deliveryProgramme delivered collaboratively by two or more
institutions (national or international), with shared
responsibility for curriculum and teaching
onlineReal-time learning delivered entirely via the internet
presentialLearning that takes place in a physical classroom setting
project_basedLearning or assessment conducted as part of a project team
research_lab_basedLearning that occurs within a research environment
work_basedLearning through practical work or workplace experience

This is an extensible enumeration. Use the prefix x- for custom values.

resultValueType

string

The result value type for this offering.

  • pass_or_fail: A simple pass or fail result.
  • insufficient_satisfactory_good: A result with three levels (insufficient, satisfactory and good).
  • us_letter: A result in the US letter grading system (A, B, C, D, F).
  • uk_letter: A result in the UK letter grading system (A, B, C, D, E, U).
  • de_grade: A result in the German grading system (1, 2, 3, 4, 5, 6).
  • grade_0_100: A result in the 0–100 grading system.
  • grade_0_10: A result in the 0–10 grading system (no decimals allowed).
  • grade_0_10_one_decimal: A result in the 0–10 grading system (with one decimal place).
  • reference_level_europass: A result in the Europass reference level grading system (A1, A2, B1, B2, C1, C2).
  • other: Any other grading system not specified above.

This is an extensible enumeration. Use the prefix x- for custom values.

EnrolmentPeriods

An enrolment period describes the moment at which an offering is available for enrolment. The enrolment period is supplemented with additional information regarding the intended users, the time for the enrolment as well as a URL that contains the enrolment logic.
startDateTime
string · date-time · required

The moment from which the enrolment should be available

endDateTime
string | null · date-time

The moment until which the enrolment should be available (when the enrolment for this target group stops), RFC3339 (date-time)

targetGroups
array | null

The people for whom this enrolment is available.

enrolmentType
string | null

The way the enrolment process should be handled for this period and target group. Likely values are: url - a url where the user should be directed to for finishing the enrolment broker - using a system that is specialized to handle enrolment

enrolmentUrl
string | null

The URL where a person of this target group can enrol him or herself

queueEnabled
boolean | null

a boolean value (true or false) indicating whether enrolment is queued.

queuedNumberStudents
number | null · int32 · min: 0

The number of students that have a queued enrolment state for this offering.

maxQueuedNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed in the queue for this offering.

comment
string | null

Additional information regarding this enrolment period that can be shared with the persons in the target groups.

supplementaryRole

string

The fundamental semantic purpose of the supplementary content. The selected role describes the intent or function of the item (for example, badge, teaser or promotional highlight).

The role MUST NOT duplicate or encode the technical media form defined by type. The type specifies the underlying media form (such as text, image, video or http), whereas the role clarifies how that media is intended to be interpreted or used.

CodeDescription
announcementGeneral-purpose announcement or notice
badgeA visual label or achievement marker
marketingPromotional or marketing-related content
promoA short promotional highlight or teaser

This is an extensible enumeration. Use the prefix x- for custom values.

supplementaryType

string

The fundamental media form of the supplementary content. The selected type determines how the associated value MUST be interpreted. It defines the technical representation of the content, independent of its semantic role.

The type specifies the underlying media form, such as text_plain, text_md, text_http, image, video or uri.

The role defines the semantic intent of the item and MUST NOT duplicate the technical media form defined by type.

CodeDescription
imageVisual media referenced via a URI (for example photographs or artwork)
text_httpHTTP-encoded textual content
text_mdMarkdown-formatted text content.
text_plainPlain text content.
uriA URI linking to an external resource
videoVideo media referenced via a URI (for example recordings or trailers)

This is an extensible enumeration. Use the prefix x- for custom values.

SupplementaryInformation

object[]

Optional supplementary information associated with this resource.

A supplementary content item consists of a technical media form (`type`), a semantic purpose (`role`), and an array of `value` entries. Together these fields define both how the content MUST be interpreted (`type`) and why it is provided (`role`). The `type` specifies the underlying media form (text, image, video or http) and determines how each `value` item MUST be handled. The `role` describes the intent or purpose of the supplementary item (for example announcement, badge, marketing or promotional teaser) and MUST NOT duplicate or encode the media form defined by `type`. The separation between `type` and `role` ensures that the same media form can serve multiple purposes, and that the semantic meaning remains independent from the technical representation of the content. The `value` array contains one or more language-typed strings, allowing the same content item to be expressed in multiple languages or alternative textual variants.
role
string · required

The fundamental semantic purpose of the supplementary content. The selected role describes the intent or function of the item (for example, badge, teaser or promotional highlight).

The role MUST NOT duplicate or encode the technical media form defined by type. The type specifies the underlying media form (such as text, image, video or http), whereas the role clarifies how that media is intended to be interpreted or used.

CodeDescription
announcementGeneral-purpose announcement or notice
badgeA visual label or achievement marker
marketingPromotional or marketing-related content
promoA short promotional highlight or teaser

This is an extensible enumeration. Use the prefix x- for custom values.

type
string · required

The fundamental media form of the supplementary content. The selected type determines how the associated value MUST be interpreted. It defines the technical representation of the content, independent of its semantic role.

The type specifies the underlying media form, such as text_plain, text_md, text_http, image, video or uri.

The role defines the semantic intent of the item and MUST NOT duplicate the technical media form defined by type.

CodeDescription
imageVisual media referenced via a URI (for example photographs or artwork)
text_httpHTTP-encoded textual content
text_mdMarkdown-formatted text content.
text_plainPlain text content.
uriA URI linking to an external resource
videoVideo media referenced via a URI (for example recordings or trailers)

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

OfferingProperties

object · required

The primary human readable identifier for this offering. This is often the source identifier as defined by the institution.

name
array · minItems: 1 · required · LanguageTypedString (circular)

The name of this offering

The offering identifiers (0..N) associated with this group.

academicSessionId
string · uuid

The identifier of the academicSession during which this courseOffering takes place. When the client does not request expansion of academicSession, only this identifier is returned. This field is expandable.

academicSession
object | null

The expanded academicSession object during which this courseOffering takes place. When the client requests expansion of academicSession, the full expanded academicSession object MUST be returned here instead of only the identifier. If no academicSession is defined, this value is null.

The state of this offering, e.g. active, inactive, archived

The rostering state of this offering indicating the state in relation to planning, e.g. active, inactive, archived

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this offering

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this offering.

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should at least a two-letter language code as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the offering.

modesOfDelivery
array | null
maxNumberStudents
number | null · int32 · min: 0

The maximum number of students allowed to enrol for this offering

enrolledNumberStudents
number | null · int32 · min: 0

The number of students who have already enrolled for this offering

pendingNumberStudents
number | null · int32 · min: 0

The number of students who have a pending enrolment request for this offering

minNumberStudents
number | null · int32 · min: 0

The minimum number of students needed for this offering to proceed

resultExpected
boolean | null

resultExpected, previously known as isLineItem is used so the specific instance of the object is identified as being an element that CAN contain “grade” information. Offerings need not always result in a grade or another type of result. If there is a result expected from a programmeOffering/courseOffering/componentOffering the is resultExpected field should be set to true

link
string | null · uri · maxLength: 2048

URL of this offering's webpage.

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

An array of periods that a person can enrol into this offering. The period is defined by target group and dateTime

object[]

Optional supplementary information associated with this resource.

addressType

string

The type of address, indicating its intended use:

  • postal: Used for receiving post
  • visit: Used for physical visits
  • deliveries: Used for deliveries
  • invoicing: Used for invoicing purposes
  • teaching: The location where educational activities take place

This is an extensible enumeration. Use the prefix x- for custom values.

Country

An object indicating a country based on at least one iso-3166 code. In situations where more than one ISO-3166 code is provided, the codes must refer to the same country.
iso3166-1-alpha2
string | null · minLength: 2 · maxLength: 2

A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

iso3166-1-alpha3
string | null · minLength: 3 · maxLength: 3

A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

iso3166-2
string | null · minLength: 5 · maxLength: 6

A country subdivision code based on https://en.wikipedia.org/wiki/ISO_3166-2

iso3166-3
string | null · minLength: 4 · maxLength: 4

A code for a country that no longer exists is listed on ISO 3166-3 (https://en.wikipedia.org/wiki/ISO_3166-3). Implementations should refrain from using the original ISO 3166-1 code for such a country since country codes can be reassigned to new countries once the original country code is officially declared obsolete.

Address

The full street address
addressType
string · required

The type of address, indicating its intended use:

  • postal: Used for receiving post
  • visit: Used for physical visits
  • deliveries: Used for deliveries
  • invoicing: Used for invoicing purposes
  • teaching: The location where educational activities take place

This is an extensible enumeration. Use the prefix x- for custom values.

street
string | null

The street name

streetNumber
string | null

The street number

array | null · minItems: 1

Further details like building name, suite, apartment number, etc.

postCode
string | null

Code to help sort and deliver mail also known as Postal code and ZIP code

city
string | null

name of the city / locality

geolocation
object | null

Geolocation of the entrance of this address (WGS84 coordinate reference system)

costType

string

The type of cost. This is an extensible enumeration.

The following values are defined in the specification:

  • stap_eligible: costs for which a student may receive STAP funding
  • total_costs: the total amount a student is required to pay to participate in this offering

Implementations may add additional values beyond those listed above, provided they do not overlap in meaning with existing values.

Cost

costType
string · required

The type of cost. This is an extensible enumeration.

The following values are defined in the specification:

  • stap_eligible: costs for which a student may receive STAP funding
  • total_costs: the total amount a student is required to pay to participate in this offering

Implementations may add additional values beyond those listed above, provided they do not overlap in meaning with existing values.

amount
string | null · pattern: ^\d+(?:\.\d+)?$

The total amount of the cost as a string. Use a '.' (dot) as an optional separator. The numbers before the separator signify the major units of the currency, after the dot the minor units. Only a single separator is allowed. Do not use a comma.

vatAmount
string | null · pattern: ^\d+(?:\.\d+)?$

The part of the cost that is VAT, as a string. Use a '.' (dot) as an optional separator. The numbers before the separator signify the major units of the currency, after the dot the minor units. Only a single separator is allowed. Do not use a comma.

amountWithoutVat
string | null · pattern: ^\d+(?:\.\d+)?$

The part of the cost that is non-VAT. as a string. Use a '.' (dot) as an optional separator. The numbers before the separator signify the major units of the currency, after the dot the minor units. Only a single separator is allowed. Do not use a comma.

currency
string | null

The currency this cost is in. Should correspond to one of the currency codes from ISO 4217.

array | null

An array of optional pre-formatted strings in different locales. Clients can choose to use this string instead of rendering their own based on the current locale of the user.

CourseId

An object describing the metadata of a course
courseId
string · uuid · required

Unique id of this course

studyloadUnit

string

The unit in which the study load is specified:

  • contact_time: Amount of time spent in scheduled classroom or contact hours.
  • ects: European Credit Transfer and Accumulation System (ECTS credits), typically 1 ECTS = 28 study hours.
  • sbu: Student workload hours, representing the total estimated effort.
  • sp: Study points used in some national systems (e.g. studiepunt in Flanders or the Netherlands).
  • hour: Plain number of hours, regardless of context (e.g. used for informal or modular learning units).

This is an extensible enumeration. Use the prefix x- for custom values.

StudyLoadDescriptor

The amount of effort to complete this education in the specified unit.
studyLoadUnit
string · required

The unit in which the study load is specified:

  • contact_time: Amount of time spent in scheduled classroom or contact hours.
  • ects: European Credit Transfer and Accumulation System (ECTS credits), typically 1 ECTS = 28 study hours.
  • sbu: Student workload hours, representing the total estimated effort.
  • sp: Study points used in some national systems (e.g. studiepunt in Flanders or the Netherlands).
  • hour: Plain number of hours, regardless of context (e.g. used for informal or modular learning units).

This is an extensible enumeration. Use the prefix x- for custom values.

value
number · required

The amount of load depicted in numbers

learningOutcomeLevel

string

The level of the learning outcome. This field supports multiple frameworks for describing cognitive complexity. Two common frameworks are provided below: Bloom’s and SOLO. These are intended as examples — additional levels or entirely different frameworks MAY be added as needed.

Bloom’s taxonomy (https://en.wikipedia.org/wiki/Bloom's_taxonomy):

LevelLabelDescription
bloom_1RememberRecall facts and basic concepts (define, list, state).
bloom_2UnderstandExplain ideas or concepts (describe, discuss, explain).
bloom_3ApplyUse knowledge in new situations (implement, solve, use).
bloom_4AnalyseDraw connections among ideas (differentiate, compare, examine).
bloom_5EvaluateJustify a decision or course of action (critique, assess, argue).
bloom_6CreateProduce new or original work (design, construct, develop).

SOLO taxonomy (https://en.wikipedia.org/wiki/Structure_of_observed_learning_outcome):

LevelLabelDescription
solo_0PrestructuralNo understanding; the student misses the point.
solo_1UnistructuralIdentifies or carries out simple procedures; limited to one
relevant aspect.
solo_2MultistructuralAddresses several relevant aspects, but sees them as unrelated;
knowledge is additive.
solo_3RelationalIntegrates aspects into a coherent whole, showing deeper
understanding of relationships.
solo_4Extended abstractGeneralises and applies learning to new domains, showing
theoretical and abstract thinking.

This is an extensible enumeration. Implementers MAY introduce other recognised taxonomies, institutional or national frameworks.

level

string

The level of this course (ECTS year of study if applicable):

  • pre_vocational: Pre-vocational education, preparatory stage prior to vocational training, typically before secondary vocational education (Dutch: mbo) level
  • secondary_vocational_education: Secondary vocational education (Dutch: mbo)
  • secondary_vocational_education_1: Secondary vocational education level 1, corresponds to levelOfQualification 1 (Dutch: mbo 1)
  • secondary_vocational_education_2: Secondary vocational education level 2, corresponds to levelOfQualification 2 (Dutch: mbo 2)
  • secondary_vocational_education_3: Secondary vocational education level 3, corresponds to levelOfQualification 3 (Dutch: mbo 3)
  • secondary_vocational_education_4: Secondary vocational education level 4, corresponds to levelOfQualification 4 (Dutch: mbo 4)
  • associate_degree: Associate degree, corresponds to levelOfQualification 5
  • bachelor: Bachelor degree, corresponds to levelOfQualification 6
  • master: Master degree, corresponds to levelOfQualification 7
  • doctoral: Doctoral level, corresponds to levelOfQualification 8
  • post_doctoral: Post-doctoral level, advanced academic or professional qualification beyond the doctoral level
  • undefined: The level is not specified
  • undivided: Integrated programme not divided into bachelor and master phases
  • nt2_1: Dutch as a second language, Programme I, intended for vocational training (CEFR level A2–B1)
  • nt2_2: Dutch as a second language, Programme II, intended for higher education or professional purposes (CEFR level B2)

This is an extensible enumeration. Use the prefix x- for custom values.

ProgrammeId

A collection of courses that lead to a certifiable learning outcome
programmeId
string · uuid · required

Unique id for this programme

programmeType

string

The type of this programme:

  • programme: A full formal programme of study leading to a qualification or degree
  • minor: A smaller, complementary programme that broadens or deepens the main field of study
  • honours: An honours programme, typically with additional academic requirements or distinction
  • specialisation: A focused area of study within a broader programme or degree
  • track: A structured learning path within a programme, often thematically or methodologically defined
  • specification: A further defined variant or subset of a track or specialisation

This is an extensible enumeration. Use the prefix x- for custom values.

qualificationAwarded

string

Type of qualification that can be obtained upon completing the programme:

  • diploma
  • vocational_diploma
  • certificate
  • associate_degree: Associate degree — short-cycle higher education qualification (EQF level 5)
  • bachelor: Bachelor — undergraduate degree (EQF level 6)
  • master: Master — postgraduate degree (EQF level 7)
  • doctoral: Doctoral degree — research-based doctoral degree (EQF level 8)
  • none: No formal qualification is awarded for this programme

In case of a degree (for example bachelor or master), the type of degree can be specified using qualificationDesignations.

modeOfStudy

string

Indicates the mode of study: full-time, part-time, dual or self-paced.

  • full_time: Standard daytime study schedule
  • part_time: Study scheduled outside regular working hours, such as evenings and weekends
  • dual_training: Combination of workplace learning and academic study
  • self_paced: Student sets their own pace and timing for study

This is an extensible enumeration. Use the prefix x- for custom values.

levelOfQualification

string

Level of qualification according to the European Qualifications Framework (EQF).
See:

  • https://europass.europa.eu/en/description-eight-eqf-levels
  • https://europass.europa.eu/en/europass-digital-tools/european-qualifications-framework
  • https://nlqf.nl/
  • https://database.nlqf.nl/assets/pdf/schema-en-print.pdf

This list is extended with:

  • eqf_0: Informal or pre-qualification learning, below EQF level 1, e.g. basic literacy or life skills
  • eqf_1: Basic general knowledge and skills to carry out simple tasks
  • eqf_2: Basic factual knowledge and practical skills in a field of work or study
  • eqf_3: Knowledge of facts, principles and processes, with basic problem-solving skills
  • eqf_4: Factual and theoretical knowledge in broad contexts within a field of work or study
  • nlqf_4plus: Dutch pre-university education (VWO), considered above EQF level 4 but not formally mapped to EQF level 5
  • eqf_5: Comprehensive, specialised knowledge and practical skills, typically short-cycle higher education (e.g. associate degree)
  • eqf_6: Advanced knowledge and skills for complex problem-solving, typically bachelor level
  • eqf_7: Highly specialised knowledge and critical awareness, typically master level
  • eqf_8: Knowledge at the most advanced frontier of a field, typically doctoral level

This is an extensible enumeration. Use the prefix x- for custom values.

formalDocument

string

The type of formal document obtained upon completion of an educational programme:

CodeDescription
certificateA formal recognition of participation or
achievement
diplomaAn official qualification awarded upon
graduation
micro_credential_certificateFormal certification specifically
documenting the award of a micro-credential
school_adviceEducational recommendation or guidance issued
by the school
testimonialA written statement confirming attendance or
performance
no_official_documentNo official document is issued

This is an extensible enumeration. Use the prefix x- for custom values.

PersonId

personId
string · uuid · required

Unique id of this person

Nationality

An object indicating nationality based on at least one iso-3166 code. In situations where more than one iso-3166 code is provided the codes have address the same country.
iso3166-1-alpha2
string | null · minLength: 2 · maxLength: 2

A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

iso3166-1-alpha3
string | null · minLength: 3 · maxLength: 3

A country code based on https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

iso3166-3
string | null · minLength: 4 · maxLength: 4

A nationality code for a country that no longer exists on https://en.wikipedia.org/wiki/ISO_3166-3 It is not advised to use the original iso3166-1 for such a country since country codes can get reassigned to new countries ones the original country code is officially obsolete. It is possible that a person has a nationality of a country that does not exist any more (after a country got split up like CZ and YU)\ and never applied for nationality of one of the new countries.

personAffiliation

string

The affiliations of this person — the roles or relationships a person has with the organisation providing this endpoint:

  • student: Enrolled learner or participant in educational offerings
  • employee: Staff member employed by the organisation (e.g. teacher, administrator)
  • guest: External person temporarily affiliated, without formal student or employee status

This is an extensible enumeration. Use the prefix x- for custom values.

gender

string

The gender of this person, based on international standards for education and data interoperability.

The values follow practices from agencies such as:

  • European Commission (EULF, INSPIRE, GeoDCAT-AP)

  • Edustandaard, EUNIS

  • m: male

  • f: female

  • x: non-binary or gender-diverse, officially registered

  • o: other gender identity, not officially classified as m/f/x

  • u: unknown or not registered

  • n: not applicable, e.g. for non-person entities or gender-irrelevant use cases

ICERelationType

string

The type of relationship between the person and their In Case of Emergency (ICE) contact:

  • partner: Spouse or life partner
  • parent: Biological, adoptive, or legal parent
  • other: Any other type of relationship (e.g. sibling, friend, neighbour)

This is an extensible enumeration. Use the prefix x- for custom values.

PersonProperties

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: surname, primaryCode, activeEnrolment
type = object · requires: givenname, primaryCode, activeEnrolment
type = object · requires: preferredName, primaryCode, activeEnrolment
Properties for Variant 1:
object · required

The primary human readable identifier for the person. This is often the source identifier as defined by the institution.

surname
string · maxLength: 256 · required

The family name of this person

activeEnrolment
boolean · required

Whether this person has an active enrolment.

givenName
string | null · maxLength: 256

The first name of this person

alternateName
string | null · maxLength: 256

The Name a person chooses to use. this is part of a Self Sovereign name e.g. in the eduId process comparable to schema.org alternateName

preferredName
string | null · maxLength: 256

The name how the person would like to be called. Usually first name of this person. In line with ISO/IEC 24760 – Identity Management Vocabulary

surnamePrefix
string | null

The prefix of the family name of this person

displayName
string | null · maxLength: 256

The name of this person which will be displayed

initials
string | null

The initials of this person

idCheckName
string | null

The name of the person as printed on official identification documents (driving licence, passport or identity card). This MUST be formatted as "surname prefix surname, given names" (separating surnamePrefix and surname with a single space, and surname and given names with a comma and space).

If the surname or given names are not available or are secret, the values "secret" and "not_available" are recommended. The surname prefix may be omitted. E.g. "van der Graaf, Jacobus Adrianus".

Optionally, the value of the student number can be added to this field by appending it at the end, separated by a comma. E.g. "van der Graaf, Jacobus Adrianus, s12345678"

dateOfBirth
string | null · date

The date of birth of this person, using the full-date format as defined in RFC 3339 (section 5.6).

cityOfBirth
string | null

The city of birth of this person

dateOfNationality
string | null · date

The date of nationality of this person, using the full-date format as defined in RFC 3339 (section 5.6).

affiliations
array | null
email
string | null · email · maxLength: 256

The primary email address of this person

secondaryEmail
string | null · email · maxLength: 256

The secondary email address of this person

telephoneNumber
string | null · maxLength: 256

The telephone number of this person

mobileNumber
string | null · maxLength: 256

The mobile number of this person

photoSocial
string | null · uri · maxLength: 2048

The url of the informal picture of this person

photoOfficial
string | null · uri · maxLength: 2048

The url of the official picture of this person

titlePrefix
string | null

A title prefix to be used for this person

titleSuffix
string | null

A title suffix to be used for this person

office
string | null

The name of the office where this person is located

ICEName
string | null · maxLength: 256

Full name of In Case of Emergency contact

ICEPhoneNumber
string | null · maxLength: 256

Phone number of In Case of Emergency contact

languageOfChoice
array | null · Language (circular)

The language(s) of choice for this person according to RFC4647. For details see the descriptions in the Language schema.

array | null

An array of additional human readable codes/identifiers for the entity being described.

array | null · minItems: 0

Assigned resources or time based on the needs of a person. They describe which needs the student requires under which conditions e.g. 15% extra time for tests that requires maths skills. These needs can later in the flows be mapped to a personalNeed for a specific association. Examples of such assignedNeeds: "ExtraTimeOnlyMaths25%", "ExtraTimeOnlyMaths30Min", "ExtraTimeDigitalTests25%"

organisationType

string

The type of this organisation. When using non-root organisation types, make sure that there is always a parent organisation of type root available.

  • root: The top-level organisation, representing the organisation itself
  • institute: A subdivision of the root organisation, typically focused on a broad field of study
  • department: An organisational unit within an organisation or one of the subdivisions of an organisation, focused on a specific discipline
  • faculty: A major academic division within an institution, often overseeing multiple departments
  • branch: A geographically separate location or campus of an organisation
  • academy: A specialised academic unit, often focused on applied or artistic disciplines
  • school: An organisational unit typically used in primary, secondary, or specialised higher education contexts

This is an extensible enumeration. Use the prefix x- for custom values.

ProgrammeProperties

A collection of courses that lead to a certifiable learning outcome
object · required

The primary human readable identifier for the programme. This is often the source identifier as defined by the institution.

programmeType
string · required

The type of this programme:

  • programme: A full formal programme of study leading to a qualification or degree
  • minor: A smaller, complementary programme that broadens or deepens the main field of study
  • honours: An honours programme, typically with additional academic requirements or distinction
  • specialisation: A focused area of study within a broader programme or degree
  • track: A structured learning path within a programme, often thematically or methodologically defined
  • specification: A further defined variant or subset of a track or specialisation

This is an extensible enumeration. Use the prefix x- for custom values.

object[] · minItems: 1 · required

The name of this programme

abbreviation
string | null · maxLength: 256

The abbreviation of this programme

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this programme

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this programme is given, should be three-letter language codes as specified by ISO 639-2. A student should be reasonably proficient in each language to be able to follow the programme.

array | null
qualificationDesignations
string[]

Academic field designations that specify the discipline area of the degree (e.g., "of Arts", "of Sciences", "of Engineering"). Multiple designations may apply to interdisciplinary programmes.

modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this programme. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

firstStartDateTime
string | null · date-time

The moment when participants can follow this programme for the first time.

fieldsOfStudy
string | null · minLength: 2 · maxLength: 6

Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). ISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added. Preferably fieldsOfStudy contains at least 4 digits. ISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf). 07 Engineering, manufacturing and construction 073 Architecture and construction 0731 Architecture and town planning 073101 Town planning

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this programme. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

array | null

The expanded learning outcome objects related to this programme. When the client requests expansion of learningOutcomes, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way exams for this course are taken (ECTS-assessment method and criteria).

admissionRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

This information may be given at an institutional level and/or at the level of individual programmes. Make sure that it is clear whether the information applies to fee-paying students (national and/or international) or to exchange students.

qualificationRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

Normally, students will receive a diploma when they have completed the (official) study programme and have obtained the required number of credits. If there are any other specific requirements that students need to have fulfilled, mention them here.

link
string | null · uri · maxLength: 2048

URL of the programme's website

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

array | null

Addresses for this programme

parentId
string · uuid

The identifier of the parent programme of which the current programme is a child. When the client does not request expansion of parent, only this identifier is returned. This field is expandable.

parent
object | null

The expanded parent programme of which the current programme is a child. When the client requests expansion of parent, the full expanded programme object MUST be returned here instead of only the identifier. If no parent is defined, this value is null.

childIds
array | null · Identifier (circular)

The identifiers of the programmes which are a part of this programme (e.g. specialisations). When the client does not request expansion of children, only these identifiers are returned. This field is expandable.

Although childIds and children (for example organisationIds versus organisations) may seem unusual, this naming is intentional and follows the singular–plural convention defined by the specification.

array | null

The expanded programme objects which are a part of this programme (e.g. specialisations). When the client requests expansion of children, the full expanded programme objects MUST be returned here instead of only the identifiers. If no children are defined, this value is null.

coordinatorIds
array | null · Identifier (circular)

The identifiers of the persons responsible for this programme. When the client does not request expansion of coordinators, only these identifiers are returned. This field is expandable.

coordinators
array | null · Person (circular)

The expanded person objects responsible for this programme. When the client requests expansion of coordinators, the full expanded person objects MUST be returned here instead of only the identifiers. If no coordinators are defined, this value is null.

instructorIds
array | null · Identifier (circular)

The identifiers of the persons teaching or delivering this programme. When the client does not request expansion of instructors, only these identifiers are returned. This field is expandable.

instructors
array | null · Person (circular)

The expanded person objects teaching or delivering this programme. When the client requests expansion of instructors, the full expanded person objects MUST be returned here instead of only the identifiers. If no instructors are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation providing this programme. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object providing this programme. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

supplementaryInformation
circular

CourseProperties

An object describing the metadata of a course
object · required

The primary human readable identifier for this course. This is often the source identifier as defined by the institution.

object[] · minItems: 1 · required

The name of this course (ECTS-title)

abbreviation
string | null · maxLength: 256

The abbreviation or internal code used to identify this course (ECTS-code)

array | null
modesOfDelivery
array | null
duration
string | null · pattern: ^(-?)P(?=\d|T\d)(?:(…

The duration of this course. The duration format is from the ISO 8601 ABNF as given in Appendix A of RFC 3339.

firstStartDate
string | null · date-time

The date and time when participants can follow this course for the first time.

description
array | null · minItems: 1 · LanguageTypedString (circular)

The description of this course (ECTS-description).

teachingLanguages
array | null · minItems: 1 · Language (circular)

The languages in which this course is given, should be three-letter language codes as specified by RFC 4647. A student should be reasonably proficient in each language to be able to follow the course.

fieldsOfStudy
string | null · minLength: 2 · maxLength: 6

Field(s) of study (e.g. ISCED-F) (https://unesdoc.unesco.org/ark:/48223/pf0000228085.locale=en). ISCED-F categorizes the fields of study 2 digits at root level and further subdivision as more digits are added. Preferably fieldsOfStudy contains at least 4 digits. ISCEDF2013vSOI2021 currently allows for 6 digits max (https://www.cbs.nl/-/media/cbs/onze-diensten/methoden/classificaties/documents/2025/pubsoi2021_ed2425.pdf). 07 Engineering, manufacturing and construction 073 Architecture and construction 0731 Architecture and town planning 073101 Town planning

learningOutcomeIds
array | null

The identifiers of the learning outcomes related to this course. When the client does not request expansion of learningOutcomes, only these identifiers are returned. This field is expandable.

array | null

The expanded learning outcome objects related to this course. When the client requests expansion of learningOutcomes, the full expanded learning outcome objects MUST be returned here instead of only the identifiers. If no learning outcomes are defined, this value is null.

admissionRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

This information may be given at an institutional level and/or at the level of individual programmes. Make sure that it is clear whether the information applies to fee-paying students (national and/or international) or to exchange students.

qualificationRequirements
array | null · minItems: 1 · LanguageTypedString (circular)

Normally, students will receive a diploma when they have completed the (official) study programme and have obtained the required number of credits. If there are any other specific requirements that students need to have fulfilled, mention them here.

enrolment
array | null · LanguageTypedString (circular)

The extra information that is provided for enrolment

resources
array | null

An overview of the literature and other resources that is used in this course (ECTS-recommended reading and other sources)

assessment
array | null · minItems: 1 · LanguageTypedString (circular)

A description of the way exams for this course are taken (ECTS-assessment method and criteria).

link
string | null · uri · maxLength: 2048

URL of the course's website

array | null

Addresses for this course

otherCodes
array | null · IdentifierEntry (circular)

An array of additional human readable codes/identifiers for the entity being described.

programmeIds
array | null · Identifier (circular)

The identifiers of the programmes of which this course is a part. This array is used because a course can belong to multiple programmes, for example in alliances. When the client does not request expansion of programmes, only these identifiers are returned. This field is expandable.

object[]

Optional supplementary information associated with this resource.

array | null

The expanded programme objects of which this course is a part. This array is used because a course can belong to multiple programmes, for example in alliances. When the client requests expansion of programmes, the full expanded programme objects MUST be returned here instead of only the identifiers. If no programmes are defined, this value is null.

coordinatorIds
array | null · Identifier (circular)

The identifiers of the persons responsible for this course. When the client does not request expansion of coordinators, only these identifiers are returned. This field is expandable.

coordinators
array | null · Person (circular)

The expanded person objects responsible for this course. When the client requests expansion of coordinators, the full expanded person objects MUST be returned here instead of only the identifiers. If no coordinators are defined, this value is null.

instructorIds
array | null · Identifier (circular)

The identifiers of the persons teaching or delivering this course. When the client does not request expansion of instructors, only these identifiers are returned. This field is expandable.

instructors
array | null · Person (circular)

The expanded person objects teaching or delivering this course. When the client requests expansion of instructors, the full expanded person objects MUST be returned here instead of only the identifiers. If no instructors are defined, this value is null.

organisationId
string · uuid

The identifier of the organisation that manages this course. When the client does not request expansion of organisation, only this identifier is returned. This field is expandable.

organisation
object | null

The expanded organisation object that manages this course. When the client requests expansion of organisation, the full expanded organisation object MUST be returned here instead of only the identifier. If no organisation is defined, this value is null.

ProgrammeOfferingId

programmeOfferingId
string · uuid · required

The unique ID of the programme offering, this should be unique across all programme, course, learning, and test component offerings.

LearningComponentOfferingId

learningComponentOfferingId
string · uuid · required

The unique ID of the learning component offering, this should be unique across all programme, course, learning, and test component offerings.

roomType

string

The type of this room.

  • general_purpose: Multi-purpose space used for general activities or flexible functions.
  • lecture_room: Room primarily used for lectures or large instructional sessions.
  • computer_room: Space equipped with computers for teaching, training or research.
  • laboratory: Room designed for practical experiments, testing or scientific work.
  • office: Workspace for administrative or academic staff.
  • workspace: Shared or individual area for working or studying.
  • exam_location: Designated space for taking written or digital examinations.
  • study_room: Quiet area intended for individual or group study.
  • examination_room: Private space for medical or psychological assessments.
  • conference_room: Room intended for meetings, discussions or presentations.

This is an extensible enumeration. Use the prefix x- for custom values.

learningComponentType

string

The type of learning component, indicating the format or method of educational delivery. One learning component of a certain type can have multiple offerings, one component can refer to a set of componentOfferings. e.g. the component lecture can be a set of lectures (group of offerings) An example of such a case in natural language: the lecture takes place weekly for 7 weeks This implies one learningComponent of type lecture with seven learningComponentOfferings of type lecture.

CodeDescription
consultationScheduled meeting for individual or group guidance.
excursionEducational trip or site visit.
externalActivity outside the home institution (e.g. internship,
course at a partner institution).
independent_studySelf-directed learning without scheduled contact hours.
learning_communityStructured collaboration between education, research and
industry with shared ownership of learning and outcomes;
distinct from internships and from COIL.
lectureClassroom-based or online lecture given by an instructor.
practicalHands-on session focusing on application of concepts.
projectStructured assignment carried out over a period of time.
skills_trainingSession focused on developing specific practical or
professional skills.
tutorialInteractive small-group session to reinforce learning.
workshopIntensive session focused on practical skills or knowledge.

This is an extensible enumeration. Use the prefix x- for custom values.

TestComponentOfferingId

testComponentOfferingId
string · uuid · required

The unique ID of the test component offering, this should be unique across all programme, course, learning, and test component offerings.

testComponentType

string

The way the test is conducted. This can be a test on paper, a digital test, a life-skills test, an oral test, or a portfolio assessment.
Together with modeOfStudy or assessment, it indicates where the test is taken and how it is conducted:

  • test_on_paper: Written examination on paper, typically in a controlled setting.
  • digital_test: Computer-based or online test, conducted via a digital platform.
  • life_skills_test: Practical assessment of real-world competencies and life-skills.
  • oral_test: Spoken examination, typically involving verbal questioning and answering.
  • portfolio_assessment: Evaluation based on a collection of the candidate's work over time.

This is an extensible enumeration. Use the prefix x- for custom values.

componentState

string

The state of this component or offering:

  • concept: not yet finalised or published
  • cancelled: withdrawn and no longer available
  • active: currently available and in use
  • inactive: no longer in use, but not cancelled

This is an extensible enumeration. Use the prefix x- for custom values.

documentType

string

The type of document:

  • additional_document: Used to provide supplementary information
  • assessment_form: A form used to assess a test
  • assessment_model: A formal description of how a test is assessed
  • assignment: A description of what is expected from a student, e.g. to submit a paper
  • attendance_report: A report containing information on a student’s attendance for a course or test
  • handed_in_document: A document submitted by the student
  • instructions: Instructions for the student on how to enrol in a course or take a test
  • plagiarism_report: A report containing information on (potential) plagiarism, e.g. in a submitted document
  • session_report: A report containing information on a session, e.g. an academic session, course, or test session
  • test_made: The completed test, including all answers provided by the student
  • other: Any other type of document not listed above

This is an extensible enumeration. Use the prefix x- for custom values.

AssociationId

associationId
string · uuid · required

Unique id of this association

associationRole

string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

associationState

string

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

remoteAssociationState

string

The state of this association for the organisation performing the request:

  • pending: The association request has been submitted, but not yet processed
  • cancelled: The association request was withdrawn before completion
  • denied: The association request was reviewed, and explicitly rejected
  • associated: The association has been successfully established, and is active
  • queued: The association request is awaiting processing in a queue

This is an extensible enumeration. Use the prefix x- for custom values.

AssociationProperties

A relationship between a person object and an offering
role
string · required

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

state
string · readOnly · required

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

writeOnly

resultState

string

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

passState

string

The state of this result:

  • unknown: The result has not been determined, recorded, or is not yet available
  • passed: The individual has met the required criteria to pass
  • failed: The individual did not meet the required criteria to pass

This is an extensible enumeration. Use the prefix x- for custom values.

Document

documentId
string · required

The unique identifier of the document

documentType
string · required

The type of document:

  • additional_document: Used to provide supplementary information
  • assessment_form: A form used to assess a test
  • assessment_model: A formal description of how a test is assessed
  • assignment: A description of what is expected from a student, e.g. to submit a paper
  • attendance_report: A report containing information on a student’s attendance for a course or test
  • handed_in_document: A document submitted by the student
  • instructions: Instructions for the student on how to enrol in a course or take a test
  • plagiarism_report: A report containing information on (potential) plagiarism, e.g. in a submitted document
  • session_report: A report containing information on a session, e.g. an academic session, course, or test session
  • test_made: The completed test, including all answers provided by the student
  • other: Any other type of document not listed above

This is an extensible enumeration. Use the prefix x- for custom values.

documentName
string · required

The name of the document

Result

A result as part of an association or attempt
state
string · required

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

resultDateTime
string · date-time · required

The date this result has been published, RFC3339 (full-date)

comment
string | null

The comment on this result

score
string | null

The score of this programme/course/component association (based on resultValueType in offering)

rawScore
integer | null

The number of points scored by a person (on the test or assessment) from which the result could be calculated. The raw score provides additional insight in the achievement of the person. The raw score also needs the value of maxRawScore to provide necessary context.

maxRawScore
integer | null

The maximum number of points a person could achieve on the test or assessment form.

final
boolean | null

final: indicates that the result has been finalised by the exam committee. This can be done in any step of the test taking and assessment cycle.

Default: false
assessorId
string · uuid

The identifier of the assessor responsible for evaluating the result. When the client does not request expansion of assessor, only this identifier is returned. This field is expandable.

object | null

The expanded assessor (person) responsible for evaluating the result. When the client requests expansion of assessor, the full person object MUST be returned here instead of only the identifier. If no assessor is defined, this value is null.

array | null

Documents that are related to the result of the test component offering association. E.g. assessment form, assessment model, etc.

CourseOfferingAssociationResult

A result as part of an association or attempt
state
string · required

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

resultDateTime
string · date-time · required

The date this result has been published, RFC3339 (full-date)

object · required

The amount of effort to complete this education in the specified unit.

comment
string | null

The comment on this result

score
string | null

The score of this programme/course/component association (based on resultValueType in offering)

rawScore
integer | null

The number of points scored by a person (on the test or assessment) from which the result could be calculated. The raw score provides additional insight in the achievement of the person. The raw score also needs the value of maxRawScore to provide necessary context.

maxRawScore
integer | null

The maximum number of points a person could achieve on the test or assessment form.

final
boolean | null

final: indicates that the result has been finalised by the exam committee. This can be done in any step of the test taking and assessment cycle.

Default: false
assessorId
string · uuid

The identifier of the assessor responsible for evaluating the result. When the client does not request expansion of assessor, only this identifier is returned. This field is expandable.

object | null

The expanded assessor (person) responsible for evaluating the result. When the client requests expansion of assessor, the full person object MUST be returned here instead of only the identifier. If no assessor is defined, this value is null.

array | null

Documents that are related to the result of the test component offering association. E.g. assessment form, assessment model, etc.

CourseOfferingAssociationExternalMe

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: courseOfferingId
type = object · requires: courseOffering
Properties for With courseOfferingId:
courseOfferingId
string · uuid · required

The identifier of the courseOffering referenced here. When the client or server does not expand offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly

Only required when the studyload for the individual student/enrolment is different from the studyload of the course offering.

courseOffering
object | null

The expanded courseOffering object referenced here. When the client or server expands offering, the full expanded courseOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

PostResponse

A system message as a response to a POST message
object[] · minItems: 1 · required

information displayed to user

redirect
string | null · uri · maxLength: 2048

URL where additional information can be found e.g. by use of deep link

groupType

string

The type of this group:

  • class: A group of students jointly scheduled for, assigned to, or engaged in educational activities
  • team: A group composed of members of a team, which may consist of students, staff, or a mix of both
  • group: A group of students jointly scheduled for, assigned to, or engaged in educational activities in a context not covered by a class

This is an extensible enumeration. Use the prefix x- for custom values.

GroupId

groupId
string · uuid · required

The unique ID of the group.

courseOfferingId

string · uuid

The unique ID of the course offering, this should be unique across all programme, course, learning, and test component offerings.

programmeOfferingId

string · uuid

The unique ID of the programme offering, this should be unique across all programme, course, learning, and test component offerings.

learningComponentOfferingId

string · uuid

The unique ID of the learning component offering, this should be unique across all programme, course, learning, and test component offerings.

testComponentOfferingId

string · uuid

The unique ID of the test component offering, this should be unique across all programme, course, learning, and test component offerings.

TimelineOverrideCourse

A timeline override of the course.
validFrom
string · date-time · required

The day on which this timelineOverride starts (inclusive), RFC3339 (date)

object · required

An object describing the metadata of a course

validTo
string | null · date-time

The day on which this timelineOverride ends (exclusive), RFC3339 (date)

CourseExpanded

These properties are only present when explicitly included
validFrom
string | null · date-time

The first day and time this course is valid (inclusive).

validTo
string | null · date-time

The day and time this course ceases to be valid (e.g. exclusive).

timelineOverrides
array | null

Timeline overrides allow an implementation to provide versions of entities that will be valid in the future or have been in the past.

membershipState

string

The state of this membership:

  • cancelled: The membership has been formally terminated and is no longer valid
  • active: The membership is currently valid and in effect

This is an extensible enumeration. Use the prefix x- for custom values.

membershipRole

string

The role of this person in the context of this membership:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

LearningComponentOfferingAssociationResult

A result as part of an association or attempt
state
string · required

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

resultDateTime
string · date-time · required

The date this result has been published, RFC3339 (full-date)

weight
integer · int32 · min: 0 · max: 100 · required

The weight to 100 as total for this offering in the course

comment
string | null

The comment on this result

score
string | null

The score of this programme/course/component association (based on resultValueType in offering)

rawScore
integer | null

The number of points scored by a person (on the test or assessment) from which the result could be calculated. The raw score provides additional insight in the achievement of the person. The raw score also needs the value of maxRawScore to provide necessary context.

maxRawScore
integer | null

The maximum number of points a person could achieve on the test or assessment form.

final
boolean | null

final: indicates that the result has been finalised by the exam committee. This can be done in any step of the test taking and assessment cycle.

Default: false
assessorId
string · uuid

The identifier of the assessor responsible for evaluating the result. When the client does not request expansion of assessor, only this identifier is returned. This field is expandable.

object | null

The expanded assessor (person) responsible for evaluating the result. When the client requests expansion of assessor, the full person object MUST be returned here instead of only the identifier. If no assessor is defined, this value is null.

array | null

Documents that are related to the result of the test component offering association. E.g. assessment form, assessment model, etc.

associationAttendance

string

The attendance status of an individual's association with an offering:

  • unknown: attendance status is unknown or unrecorded
  • not_started: attendance has not yet begun
  • unfinished: attendance has begun but not completed
  • present: individual attended as expected
  • absent: individual did not attend

This is an extensible enumeration. Use the prefix x- for custom values.

ProgrammeOfferingAssociationResult

A result as part of an association or attempt
state
string · required

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

resultDateTime
string · date-time · required

The date this result has been published, RFC3339 (full-date)

object · required

The amount of effort to complete this education in the specified unit.

comment
string | null

The comment on this result

score
string | null

The score of this programme/course/component association (based on resultValueType in offering)

rawScore
integer | null

The number of points scored by a person (on the test or assessment) from which the result could be calculated. The raw score provides additional insight in the achievement of the person. The raw score also needs the value of maxRawScore to provide necessary context.

maxRawScore
integer | null

The maximum number of points a person could achieve on the test or assessment form.

final
boolean | null

final: indicates that the result has been finalised by the exam committee. This can be done in any step of the test taking and assessment cycle.

Default: false
assessorId
string · uuid

The identifier of the assessor responsible for evaluating the result. When the client does not request expansion of assessor, only this identifier is returned. This field is expandable.

object | null

The expanded assessor (person) responsible for evaluating the result. When the client requests expansion of assessor, the full person object MUST be returned here instead of only the identifier. If no assessor is defined, this value is null.

array | null

Documents that are related to the result of the test component offering association. E.g. assessment form, assessment model, etc.

ProgrammeOfferingAssociationExternalMe

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: programmeOfferingId
type = object · requires: programmeOffering
Properties for With courseOfferingId:
programmeOfferingId
string · uuid · required

The identifier of the programmeOffering referenced here. When the client does not request expansion of offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly
programmeOffering
object | null

The expanded programmeOffering object referenced here. When the client requests expansion of offering, the full expanded programmeOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

personalNeed

string

The personal needs required for this component by this specific candidate.

This list is a selection from the IMS Global Personal Needs and Preferences specification. For the full reference, see:
https://www.imsglobal.org/sites/default/files/spec/afa/3p0/information_model/imsafa3p0pnp_v1p0_InfoModel.html

  • extra_time: Additional time allocated for completing the component beyond standard timing
  • spoken: Spoken output support (e.g. text-to-speech)
  • spell_checker_on_screen: On-screen spell checking tool enabled during writing tasks

This is an extensible enumeration. Use the prefix x- for custom values.

TestComponentOfferingAssociationResult

A result as part of an association or attempt
state
string · required

The state of this result:

  • in_progress: The result is currently being worked on or assessed
  • postponed: The result process has been delayed and will be resumed later
  • completed: The result has been finalised and recorded
  • queued: The result is awaiting processing or evaluation

This is an extensible enumeration. Use the prefix x- for custom values.

resultDateTime
string · date-time · required

The date this result has been published, RFC3339 (full-date)

weight
integer · int32 · min: 0 · max: 100 · required

The weight to 100 as total for this offering in the course

comment
string | null

The comment on this result

score
string | null

The score of this programme/course/component association (based on resultValueType in offering)

rawScore
integer | null

The number of points scored by a person (on the test or assessment) from which the result could be calculated. The raw score provides additional insight in the achievement of the person. The raw score also needs the value of maxRawScore to provide necessary context.

maxRawScore
integer | null

The maximum number of points a person could achieve on the test or assessment form.

final
boolean | null

final: indicates that the result has been finalised by the exam committee. This can be done in any step of the test taking and assessment cycle.

Default: false
assessorId
string · uuid

The identifier of the assessor responsible for evaluating the result. When the client does not request expansion of assessor, only this identifier is returned. This field is expandable.

object | null

The expanded assessor (person) responsible for evaluating the result. When the client requests expansion of assessor, the full person object MUST be returned here instead of only the identifier. If no assessor is defined, this value is null.

array | null

Documents that are related to the result of the test component offering association. E.g. assessment form, assessment model, etc.

attemptState

string

Status of the fulfilment of the attempt. The status typically progresses from pending to associated and then to finished.

  • pending: A student is associated to the offering, but has not yet been allocated a specific attempt.
  • cancelled: The attempt has been cancelled, for example by the student or the institution
  • associated: The attempt has been confirmed/accepted/processed, the student is enrolled for a specific test moment
  • finished: The attempt has ended, for example because the student has ended the test or the student has completed the test, or the deadline for handing in / finishing the test has expired.

attendance

string

The attendance status of an individual's association with an offering:

  • unknown: attendance status is unknown or unrecorded
  • not_started: attendance has not yet begun
  • unfinished: attendance has begun but not completed
  • present: individual attended as expected
  • absent: individual did not attend

This is an extensible enumeration. Use the prefix x- for custom values.

TimelineOverrideProgramme

A time-line override of the programme.
validFrom
string · date-time · required

The day on which this timelineOverride starts (inclusive), RFC3339 (date)

object · required

A collection of courses that lead to a certifiable learning outcome

validTo
string | null · date-time

The day on which this timelineOverride ends (exclusive), RFC3339 (date)

ProgrammeExpanded

These properties are only present when explicitly included. This allows for creating and displaying structures of programmes
validFrom
string | null · date-time

The first moment this programme is valid (inclusive).

validTo
string | null · date-time

The moment this programme ceases to be valid (e.g. exclusive).

timelineOverrides
array | null

Timeline overrides allow an implementation to provide versions of entities that will be valid in the future or have been in the past.

Url

string · uri · maxLength: 2048

Url containing a web address.

TestComponentOfferingAssociationAttemptFull

Planning and execution information on an attempt belong to a TestComponentOfferingAssociation. Result on the attempt is only relevant when a score or rawScore can be determined.
attemptId
string · uuid · required

Unique id of this attempt

opportunity
string | null

The opportunity during which this attempt can be fulfilled. Only relevant when only one attempt is allowed per association.

attempt
integer | null · int32

Which attempt this is for the given person on the given offering.

startDateTime
string | null · date-time

Moment (date and time) of the start of the actual attempt. This can be the start date and time for an assessment where the association has no start or end date and time, but only has a relation with an academic session representing a term, trimester, semester or academic year.

endDateTime
string | null · date-time

Moment (date and time) of the end of the actual attempt. This can be the deadline for handing in a document for an assignment or the end date and time for an test where the association has no start or end date and time, but only has a relation with an academic session representing a term, trimester, semester or academic year.

roomIds
array | null

The identifiers of the rooms for this offering. When the client does not request expansion of rooms, only these identifiers are returned. This field is expandable.

rooms
array | null

The expanded room objects for this offering. When the client requests expansion of rooms, the full expanded room objects MUST be returned here instead of only the identifiers. If no rooms are defined, this value is null.

irregularities
string | null

Additional information about external disturbances or (potentially) illegal actions by the student, before, during or after the test.

coordinatorId
string · uuid

The identifier of the coordinator responsible for overseeing the test. When the client does not request expansion of coordinator, only this identifier is returned. This field is expandable.

object | null

The expanded person object representing the coordinator responsible for overseeing the test. When the client requests expansion of coordinator, the full person object MUST be returned here instead of only the identifier. If no coordinator is defined, this value is null.

array | null

Documents that are related to the test component offering association attempt. E.g. test completed, work handed in, etc.

courseOfferingAssociationId
string | null · uuid

The unique identifier of the student’s enrolment in a course offering to which the current association relates.

testComponentOfferingAssociationId
string | null · uuid

The associationId under which this attempt was made.

CourseOfferingAssociationsExternalMePostRequest

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: courseOfferingId
type = object · requires: courseOffering
Properties for With courseOfferingId:
courseOfferingId
string · uuid · required

The identifier of the courseOffering referenced here. When the client or server does not expand offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly

Only required when the studyload for the individual student/enrolment is different from the studyload of the course offering.

courseOffering
object | null

The expanded courseOffering object referenced here. When the client or server expands offering, the full expanded courseOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

issuer
circular

PersonsPostRequest

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: surname, primaryCode, activeEnrolment
type = object · requires: givenname, primaryCode, activeEnrolment
type = object · requires: preferredName, primaryCode, activeEnrolment
Properties for Variant 1:
object · required

The primary human readable identifier for the person. This is often the source identifier as defined by the institution.

surname
string · maxLength: 256 · required

The family name of this person

activeEnrolment
boolean · required

Whether this person has an active enrolment.

givenName
string | null · maxLength: 256

The first name of this person

alternateName
string | null · maxLength: 256

The Name a person chooses to use. this is part of a Self Sovereign name e.g. in the eduId process comparable to schema.org alternateName

preferredName
string | null · maxLength: 256

The name how the person would like to be called. Usually first name of this person. In line with ISO/IEC 24760 – Identity Management Vocabulary

surnamePrefix
string | null

The prefix of the family name of this person

displayName
string | null · maxLength: 256

The name of this person which will be displayed

initials
string | null

The initials of this person

idCheckName
string | null

The name of the person as printed on official identification documents (driving licence, passport or identity card). This MUST be formatted as "surname prefix surname, given names" (separating surnamePrefix and surname with a single space, and surname and given names with a comma and space).

If the surname or given names are not available or are secret, the values "secret" and "not_available" are recommended. The surname prefix may be omitted. E.g. "van der Graaf, Jacobus Adrianus".

Optionally, the value of the student number can be added to this field by appending it at the end, separated by a comma. E.g. "van der Graaf, Jacobus Adrianus, s12345678"

dateOfBirth
string | null · date

The date of birth of this person, using the full-date format as defined in RFC 3339 (section 5.6).

cityOfBirth
string | null

The city of birth of this person

dateOfNationality
string | null · date

The date of nationality of this person, using the full-date format as defined in RFC 3339 (section 5.6).

affiliations
array | null
email
string | null · email · maxLength: 256

The primary email address of this person

secondaryEmail
string | null · email · maxLength: 256

The secondary email address of this person

telephoneNumber
string | null · maxLength: 256

The telephone number of this person

mobileNumber
string | null · maxLength: 256

The mobile number of this person

photoSocial
string | null · uri · maxLength: 2048

The url of the informal picture of this person

photoOfficial
string | null · uri · maxLength: 2048

The url of the official picture of this person

titlePrefix
string | null

A title prefix to be used for this person

titleSuffix
string | null

A title suffix to be used for this person

office
string | null

The name of the office where this person is located

ICEName
string | null · maxLength: 256

Full name of In Case of Emergency contact

ICEPhoneNumber
string | null · maxLength: 256

Phone number of In Case of Emergency contact

languageOfChoice
array | null · Language (circular)

The language(s) of choice for this person according to RFC4647. For details see the descriptions in the Language schema.

array | null

An array of additional human readable codes/identifiers for the entity being described.

array | null · minItems: 0

Assigned resources or time based on the needs of a person. They describe which needs the student requires under which conditions e.g. 15% extra time for tests that requires maths skills. These needs can later in the flows be mapped to a personalNeed for a specific association. Examples of such assignedNeeds: "ExtraTimeOnlyMaths25%", "ExtraTimeOnlyMaths30Min", "ExtraTimeDigitalTests25%"

ProgrammeOfferingAssociationsExternalMePostRequest

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = object · requires: programmeOfferingId
type = object · requires: programmeOffering
Properties for With courseOfferingId:
programmeOfferingId
string · uuid · required

The identifier of the programmeOffering referenced here. When the client does not request expansion of offering, only this identifier is returned. This field is expandable.

associationId
string · uuid

Unique id of this association

role
string

The role of the person associated with the offering:

  • student: Enrolled participant in the offering
  • lecturer: Delivers lectures or leads teaching
  • teaching_assistant: Supports the lecturer in teaching activities
  • coordinator: Responsible for organisational or administrative aspects
  • invigilator: Supervises examinations or assessments
  • assessor: Evaluates student performance or work
  • guest: External participant with an atypical role

This is an extensible enumeration. Use the prefix x- for custom values.

startDateTime
string | null · date-time

The start date and time the person is intended to start participating in the offering. Formatted according to RFC3339 (full-date)

expectedEndDateTime
string | null · date-time

The expected end date and time the person is intended to stop participating in the offering. Formatted according to RFC3339 (date-time)

actualEndDateTime
string | null · date-time

The actual end date and time the person stopped participating in the offering. Formatted according to RFC3339 (full-date)

state
string · readOnly

The state of this association:

  • pending: A student has requested enrolment, but it has not yet been confirmed, accepted or processed
  • cancelled: The association has been cancelled, for example by the student or the institution
  • denied: The student was denied enrolment, for example because they did not meet the requirements
  • associated: The association has been confirmed, accepted or processed; the student is enrolled
  • queued: The association is in a queue, for example because the course is full
  • finished: The association has ended, for example because the course has ended or the student has completed the course

This is an extensible enumeration. Use the prefix x- for custom values.

writeOnly
programmeOffering
object | null

The expanded programmeOffering object referenced here. When the client requests expansion of offering, the full expanded programmeOffering object MUST be returned here instead of only the identifier. If no offering is defined, this value is null.

issuer
circular
On this page
  • Service
  • AcademicSession
  • Building
  • LearningComponent
  • TestComponent
  • LearningComponentOffering
  • LearningComponentOfferingAssociation
  • TestComponentOffering
  • TestComponentOfferingAssociation
  • Course
  • CourseOffering
  • CourseOfferingAssociation
  • Group
  • Membership
  • LearningOutcome
  • Organisation
  • Person
  • Programme
  • ProgrammeOffering
  • Room
  • ProgrammeOfferingAssociation
  • TestComponentOfferingAssociationAttempt
  • expandableObjects
  • Ext
  • Problem
  • ProblemVersionNotAcceptable
  • filterPresence
  • academicSessionType
  • Pagination
  • codeType
  • IdentifierEntry
  • Language
  • LanguageTypedString
  • Identifier
  • Consumer
  • offeringState
  • CourseOfferingId
  • rosteringState
  • modeOfDelivery
  • resultValueType
  • EnrolmentPeriods
  • supplementaryRole
  • supplementaryType
  • SupplementaryInformation
  • OfferingProperties
  • addressType
  • Country
  • Address
  • costType
  • Cost
  • CourseId
  • studyloadUnit
  • StudyLoadDescriptor
  • learningOutcomeLevel
  • level
  • ProgrammeId
  • programmeType
  • qualificationAwarded
  • modeOfStudy
  • levelOfQualification
  • formalDocument
  • PersonId
  • Nationality
  • personAffiliation
  • gender
  • ICERelationType
  • PersonProperties
  • organisationType
  • ProgrammeProperties
  • CourseProperties
  • ProgrammeOfferingId
  • LearningComponentOfferingId
  • roomType
  • learningComponentType
  • TestComponentOfferingId
  • testComponentType
  • componentState
  • documentType
  • AssociationId
  • associationRole
  • associationState
  • remoteAssociationState
  • AssociationProperties
  • resultState
  • passState
  • Document
  • Result
  • CourseOfferingAssociationResult
  • CourseOfferingAssociationExternalMe
  • PostResponse
  • groupType
  • GroupId
  • courseOfferingId
  • programmeOfferingId
  • learningComponentOfferingId
  • testComponentOfferingId
  • TimelineOverrideCourse
  • CourseExpanded
  • membershipState
  • membershipRole
  • LearningComponentOfferingAssociationResult
  • associationAttendance
  • ProgrammeOfferingAssociationResult
  • ProgrammeOfferingAssociationExternalMe
  • personalNeed
  • TestComponentOfferingAssociationResult
  • attemptState
  • attendance
  • TimelineOverrideProgramme
  • ProgrammeExpanded
  • Url
  • TestComponentOfferingAssociationAttemptFull
  • CourseOfferingAssociationsExternalMePostRequest
  • PersonsPostRequest
  • ProgrammeOfferingAssociationsExternalMePostRequest